Как удалить ссылку «+ Добавить новую категорию» из метабокса категории

9

Внутри метабокса категории Wordpress или любого настраиваемого поля таксономии по этому вопросу есть ссылка с текстом «+ Добавить новую категорию». Есть ли способ, которым эту ссылку можно удалить, предпочтительно не прибегая к хаку JS или CSS, чтобы скрыть ее? Лучше всего было бы скрыть это с помощью какого-либо фильтра или ловушки действий.

Если бы не было ловушки действий или метода фильтрации, чтобы удалить его, я был бы открыт для решений JS и CSS в качестве крайней меры.

Причина, по которой я это делаю, заключается в том, что у меня установлена ​​программа Wordpress, интегрированная с Magento, и я создаю и заполняю пользовательскую таксономию, называемую «бренды», списком брендов из базы данных Magento, чтобы сообщение можно было присвоить бренду. Очевидно, это означает, что я не хочу, чтобы пользователи могли добавлять свои собственные термины и только выбирать динамически добавляемые бренды, чтобы синхронизировать их с Magento.

Спасибо.

Дуэйн Чаррингтон
источник

Ответы:

14

Метабоксы по умолчанию регистрируются в файле wp-admin/includes/meta-boxes.php. Там вы можете найти функцию, post_categories_meta_box()которая будет генерировать метабокс таксономии. В настоящее время нет доступных хуков для фильтрации вывода. Но вы можете сделать одно из следующего:

  1. Используйте, remove_meta_box()чтобы удалить существующий метабокс категории и зарегистрировать свой собственный add_meta_box(). Скопируйте и вставьте существующий код в новую функцию метабокса и удалите блок кода из строки 345в 367.
  2. Более чистый путь: удалите эту edit_termsвозможность из ваших пользовательских ролей с помощью remove_cap(). Если вы посмотрите в функцию metabox, 345вы можете увидеть в нем оператор if, который проверяет, есть ли у пользователя возможность edit_terms. Если это так, + Add New XYбудет отображаться. Проблема здесь, название возможности является динамическим и может быть любым. Если кто-то зарегистрирует таксономию с другой способностью именования, это, вероятно, не будет работать (не проверено).
rofflox
источник
1
О да. Возможности это хороший способ на самом деле. Однако я не хочу удалять эту способность из других таксономий, только одну из них. Я решил, что скрыть ссылку с каким-то старым добрым CSS было самым простым выбором. Спасибо за отличные предложения.
Дуэйн Чаррингтон
2
Я не могу комментировать сообщение rofflox, но похоже, что возможность была изменена на "manage_categories"
pkmatte
Спасибо! Это лучший метод, который я мог найти, я использую его на мультисайтах, поэтому использую возможность "setup_network", чтобы ограничить администраторов сайта от использования этих возможностей для таксономии, добавленной плагином, который должен оставаться неотредактированным.
Сэм