Удаление метабокс для «слизняка» без удаления функциональности

wordpress.stackexchange https://wordpress.stackexchange.com/questions/2025

Вопрос

Вот интересный вопрос.

Я недавно заметил, что если вы используете код

remove_meta_box('slugdiv', 'post', 'normal'); 

На самом деле вы не можете изменить слизняк, когда нажимаете на URL -слизняк под заголовком страницы.

Чтобы уточнить, когда вы используете remove_meta_box для slugdiv, метабокс и параметры экрана удаляются, однако вы все равно можете нажать на URL -адрес под заголовком Post, чтобы отредактировать его ... Однако, когда вы переходите к обновлению/публикации сообщения Какую бы модификацию, которую вы сделали, не принимает.

Моя цель состоит в том, чтобы удалить ту же метабокс с экрана «Редактировать пост» и удалить его со страницы «Параметры экрана», но я хочу убедиться, что при редактировании слизняка под заголовком POST это все еще работает.

Может ли кто -нибудь предоставить решение этой проблемы? Заранее спасибо.

Это было полезно?

Решение 2

В итоге я просто добавил следующий CSS в файл CSS, который я звонил в свой файл functions.php для области администратора:

[for="slugdiv-hide"] { 
    display: none; 
    }

#slugdiv { 
    display: none; 
    }

Это удалило как параметры экрана, так и метабокс, в то же время позволив мне редактировать URL -адрес под заголовком.

Обновлено

На основании ответа, предоставленного FXFUTURE, я изменил его код, расширив его и включил значения CSS для параметров экрана и метабокс SLUG, обеспечивая при этом код только включен на страницу Post-New.php и Post.php.

// HIDE THE SLUG METABOX AND SLUG SCREEN OPTIONS
   function hide_slug_options() {
    global $post;
    global $pagenow;
    $hide_slugs = "<style type=\"text/css\">#slugdiv, #edit-slug-box, [for=\"slugdiv-hide\"] { display: none; }</style>\n";
    if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php') print($hide_slugs);
   }
   add_action( 'admin_head', 'hide_slug_options'  );

Другие советы

Коробка, которая позволяет Slug Edition под заголовком POST, фактически связана с метабокс Slug. Это нужно для работы. Итак, удаление метабокс сломает его.

Я думаю, единственное решение - использовать JavaScript или CSS, чтобы скрыть его. Что -то подобное сработает:

function hide_slug_box() {
    global $post;
    global $pagenow;
    if (is_admin() && $pagenow=='post-new.php' OR $pagenow=='post.php') {
        echo "<script type='text/javascript'>
            jQuery(document).ready(function($) {
                jQuery('#edit-slug-box').hide();
            });
            </script>
        ";
    }
}
add_action( 'admin_head', 'hide_slug_box'  );

Вы должны вызвать remove_meta_box в крючке add_meta_boxes, чтобы он работал. Он проверяется на 4.0.

add_action( 'add_meta_boxes', 'customize_admin_backend_cpt',0 );

function customize_admin_backend_cpt () {
    remove_meta_box( 'slugdiv', 'your_cpt_goes_here', 'normal' );
}

Вместо того, чтобы редактировать свой файл CSS, вы можете использовать это в своих функциях.php:

function hide_all_slugs() {
global $post;
$hide_slugs = "<style type=\"text/css\"> #slugdiv, #edit-slug-box { display: none; }</style>";
print($hide_slugs);
}
add_action( 'admin_head', 'hide_all_slugs'  );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top