Видаліть спеціальний таксономічний метабокс із екрана користувальницького типу публікації


17

У мене є дві ієрархічні власні таксономії, кожна з яких відповідає відповідному типу користувальницької пошти. Я хотів би видалити метабокс для кожного на екрані редагування типу публікації.

Я прочитав видалити користувацький метабокс таксономії у вигляді спеціального типу публікації та як видалити метабокс таксономії в стилі категорії? але я все-таки застряг.

Я використовую функцію:

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'partner_typediv', 'partners', 'normal' );
    remove_meta_box( 'person_typediv', 'people', 'normal' );
}
add_action( 'admin_menu' , 'remove_taxonomies_metaboxes' );

Я нефіксував post_types та custom_taxonomies, але це все. Я спробував використовувати admin_menuгачок і add_meta_boxesгачок, рекомендовані Codex. Я спробував і те, normalі sideдля третього параметра.

Вищевказана функція розташована у mu-pluginsфайлі нижче функції, яка реєструє типи постів та таксономії.


EDIT: Це був помилковий помилок у функції register_taxonomy. Я жахлива людина. Дякую всім за допомогу. Я все-таки дізнався деякі речі!


навіть з 'show_ui' => false?
JMau

1
Хочу користувальницький інтерфейс у меню все-таки, тільки не під час редагування публікації.
mrwweb

Відповіді:


37

Якщо ви вручну реєструєте власну власну таксономію через register_taxonomy, ви можете передавати аргументи, щоб контролювати, де з'являється метабокс.

У наведеному нижче прикладі налаштування show_uiдля falseповністю видалить метабокс із екрана редагування, екрана швидкого редагування та меню адміністратора. Але якщо встановити show_uiдля trueвас може досягти більш тонкий контроль, а потім , використовуючи show_in_quick_editі meta_box_cbаргументи (настройка пізніше помилкових приховує METABOX на екрані CPT редагування за бажанням).

register_taxonomy( 'your_custom_taxonomy', array( 'your_custom_post_type' ), $args );
$args = array(
    'show_ui'                    => true,
    'show_in_quick_edit'         => false,
    'meta_box_cb'                => false,
);

Це працює. зберігайте меню адміністратора та видаляйте власну таксономію у формі, додаючи нову спеціальну пошту Спасибі.
IT Vlogs

Дякую! Я шукав 'meta_box_cb' => false, щоб приховати його у post-new, де встановлення на null просто відображає версію wordpress за замовчуванням.
Ryan H

Гладкий і простий.
Травіс ван дер Шрифт

7

Ви кажете, що хочете видалити поля з postекрана редагування, а не з екрану типу публікації, тому припускаючи, що ви маєте змогу зареєструвати свою таксономію лише для типів публікацій, до яких ви хочете застосувати, і уникати цього взагалі. Приклад у Codex реєструє зразкову таксономію лише для bookтипу повідомлення типу:

register_taxonomy( 'genre', array( 'book' ), $args );

Я думаю, що це потрібно зробити, але ви не розмістили жодного реєстраційного коду для типів публікацій чи систематики.

Якщо ви створили мета-поля самостійно - тобто ці поля не є типовими, тоді спосіб уникнути цієї проблеми полягає в реєстрації мета-ящиків на спеціальних гачках після типу :

do_action('add_meta_boxes_' . $post_type, $post);

Або слідувати прикладу вище:

add_action('add_meta_boxes_book', 'your-box-callback');

Один із таких підходів повинен вирішити це для вас. Я не думаю, що вам взагалі не доведеться користуватися remove_meta_box.

Якщо ви намагаєтесь видалити метаполе з типу публікації, для якої вони зареєстровані, це спрацьовує (знову слідуючи прикладу в Кодексі):

function remove_taxonomies_metaboxes() {
    remove_meta_box( 'genrediv', 'book', 'side' );
}
add_action( 'add_meta_boxes_book' , 'remove_taxonomies_metaboxes' );

Я впевнений, що admin_menuзарано, але цього не підтвердив. add_metaboxesтакож працює для мене. Я не знаю, чому це не працює для вас.


Вибачте за незрозумілість. Я мав на увазі екран " Тип публікації" . Кожна таксономія зареєстрована лише для одного спеціального типу публікації. Я спробував використати цей add_meta_boxes_ * гачок коротко, але спробую спробувати деякі варіанти цього (хоча я використовую автоматично створені метабокси).
mrwweb

Тоді останній варіант у відповіді повинен це зробити. Я тестував це. Коробка все-таки відходить. Не можу сказати, що я розумію логіку існування таксономій без скриньки.
s_ha_dum

(Див. Редагування вище. Це була помилка. Це на мені ... Дякую за допомогу). Щоб відповісти на ваше запитання, я показую таксономії з розширеним користувацьким полем (це кращий інтерфейс для користувачів сайту).
mrwweb

Ваш останній приклад вказав мене в правильному напрямку, але це працювало для мене: addgery ('admin_menu', 'remove_taxonomies_metaboxes');
Маркос Буарке

Я виявив, що цей синтаксис не працює з поточною версією WordPress, перевірте цю відповідь на робоче рішення.
Дейві

3

Використовуючи ACF для керування спеціальними таксономіями, метабокси за замовчуванням не потрібні. Я успішно спробував цей код:

      function remove_cuttax_metaboxes() {
           $post_type = 'post';
           $taxonomy = 'custom_taxonomy_slug';
           remove_meta_box( 'tagsdiv'.$taxonomy, $post_type, 'side' );

       }
       add_action( 'admin_menu' , 'remove_cuttax_metaboxes', 100 );

Нижній пріоритет (100) нехай цей код також працює, якщо таксономії створюються плагіном типу CPT-UI.


Тегидів повинен мати сліди -: remove_meta_box( 'tagsdiv-'.$taxonomy, $post_type, 'side' );
Грег Хейгуд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.