Скрыть поле описания для пользовательской таксономии?

Вопрос или проблема

В WordPress создана пользовательская таксономия

<?php
function create_works_category_taxonomy() {
    $labels = array(
        'name'              => 'Категории работ',
        'singular_name'     => 'Категория работ',
        'search_items'      => 'Поиск категорий работ',
        'all_items'         => 'Все категории работ',
        'parent_item'       => 'Родительская категория работ',
        'parent_item_colon' => 'Родительская категория работ:',
        'edit_item'         => 'Редактировать категорию работ',
        'update_item'       => 'Обновить категорию работ',
        'add_new_item'      => 'Добавить новую категорию работ',
        'new_item_name'     => 'Имя новой категории работ',
        'menu_name'         => 'Категории работ',
    );

    $args = array(
        'hierarchical'      => true,
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'works-category' ),
    );

    register_taxonomy( 'works-category', 'page', $args );
}

add_action( 'init', 'create_works_category_taxonomy' );

Вопрос – Существует ли какой-либо фильтр/хаки, который по умолчанию не отображал бы основное поле содержимого Описание для данной таксономии?

Поле описания

*Я понимаю, что можно использовать CSS/JS, но мне хотелось бы знать, есть ли более чистое решение?

Представление редактирования термина использует edit-tag-form.php для отображения формы редактирования. Поле описания жестко закодировано в файле без каких-либо фильтров или действий для управления его видимостью. Поэтому мне страшно, что вам придется прибегнуть к решениям на основе css/js.

Если вы чувствуете себя смелым, вы можете отключить стандартный интерфейс для пользовательской таксономии, зарегистрировать новые страницы подменю для списка и редактирования терминов и обрабатывать операции CRUD для терминов на этих страницах с помощью пользовательской формы.

Ответ или решение

К сожалению, в WordPress нет встроенного фильтра или хука для скрытия поля описания для пользовательской таксономии на экране редактирования. Поле описания жестко закодировано в файле edit-tag-form.php, и, следовательно, вам не удастся скрыть это поле программным способом.

То, что вы можете сделать, — это использовать подход с CSS или JavaScript. Например, вы можете добавить следующий код в файл вашей темы functions.php:

add_action('admin_footer', 'hide_taxonomy_description_field');
function hide_taxonomy_description_field() {
    global $pagenow;

    if ($pagenow === 'term.php' || $pagenow === 'edit-tags.php') {
        ?>
        <style>
            /* Скрыть поле описания для конкретной таксономии */
            #descriptionwrap {
                display: none;
            }
        </style>
        <?php
    }
}

Этот код добавляет стиль, который скрывает поле описания в редакторе терминов. Обратите внимание, что это решение визуально скрывает поле, но не удаляет его из кода. Если вы хотите полностью исключить поле описания, вам придется создать пользовательский интерфейс для управления вашей таксономией, включая создание пользовательских подстраниц для списка и редактирования терминов.

Если вы хотите пойти по более сложному пути, вот общий обзор:

  1. Отключите стандартный пользовательский интерфейс для вашей пользовательской таксономии, добавив следующие аргументы при регистрации:
$args = array(
    // остальные параметры
    'show_ui' => false,
);
  1. Зарегистрируйте новые подстраницы для создания и редактирования терминов таксономии с помощью add_menu_page() и add_submenu_page().

  2. На этих страницах создайте свой собственный HTML-форма и обработайте CRUD операции через AJAX или обычные запросы WordPress.

Этот метод потребует больше времени и усилий, но это позволит создать полностью кастомизированный интерфейс, который не будет содержать ненужных полей, таких как описание.

Хотя нет простого способа скрыть описание из-за ограничения кода WordPress, использовать CSS и JavaScript или создать собственный интерфейс — это наилучшие альтернативы для решения вашей задачи.

Оцените материал
Добавить комментарий

Капча загружается...