netconstructorcom
  • 0
Мастер

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

  • 0

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

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

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

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

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

Моя цель — удалить тот же метабокс с экрана редактирования сообщения И удалить его со страницы параметров экрана, НО я хочу убедиться, что при редактировании слага под заголовком сообщения это все еще работает.

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

Share
  1. Привет @NetConstructor.com : я не понимаю ваш вопрос: «Моя цель — удалить тот же метабокс с экрана редактирования сообщения И удалить его со страницы параметров экрана, НО я хочу убедиться, что при редактировании слага под сообщением название, что это все еще работает». Если убрать поле, как его редактировать? Можешь перефразировать? Мне вообще непонятно.

    • 0
  2. Поле, которое позволяет редактировать слаг под заголовком поста, фактически привязано к метабоксу слагов. Это нужно для работы. Таким образом, удаление метабокса сломает его.

    Я думаю, что единственным решением было бы использовать 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'  );
    
    • 0
  3. В итоге я просто добавил следующий 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'  );
    
    • 0
  4. Вы должны вызвать 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' );
    }
    
    • 0
  5. Вместо того, чтобы редактировать файл css, вы можете использовать его в файле functions.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'  );
    
    • 0

Оставить ответ

You must login to add an answer.