wpwebsite.ru wordpress WPWebSite

Как удалить или изменить имя поля в WordPress meta box

В процессе разработки тем и плагинов для WordPress часто возникает задача изменить или удалить поля в мета-боксах (meta boxes) на страницах редактирования записи. Это позволяет адаптировать интерфейс под конкретные нужды проекта, убрать лишние или ненужные элементы, либо переименовать их для удобства пользователей.

Что такое meta box и зачем менять поля в WordPress

Meta box — это блок на странице редактирования записей, страниц или пользовательских типов записей (Custom Post Types), в котором выводятся дополнительные поля для ввода информации. WordPress по умолчанию добавляет несколько meta box’ов, а разработчики могут создавать свои.

Иногда нужно изменить название поля, чтобы оно лучше отражало смысл, или вовсе убрать поле, которое не используется или мешает. Делать это можно программно, используя стандартные хуки и функции WordPress.

Удаление стандартного поля из meta box в WordPress

Для удаления поля нужно понять, к какому meta box оно относится и какой у него идентификатор (ID). Обычно это можно узнать, просмотрев исходный код страницы редактирования записи или документацию плагина/темы.

Например, чтобы удалить стандартный meta box «Слаг» (URL-имя записи), можно воспользоваться функцией remove_meta_box(). Вот пример кода, который нужно добавить в файл functions.php вашей темы или в плагин:

function wpwebsite_remove_slug_meta_box() {
    remove_meta_box('slugdiv', 'post', 'normal');
}
add_action('admin_menu', 'wpwebsite_remove_slug_meta_box');

Здесь 'slugdiv' — это ID meta box, 'post' — тип записи, для которого удаляется meta box, и 'normal' — контекст отображения.

Таким же образом можно удалить и другие meta box’ы, если знаете их ID.

Как узнать ID meta box для удаления

Чтобы узнать ID, откройте страницу редактирования записи, нажмите правой кнопкой на заголовок meta box и выберите «Просмотреть код» или «Inspect». Найдите элемент div с классом postbox и атрибутом id. Вот ID и есть.

Изменение имени (заголовка) поля в meta box

Для изменения текста заголовка meta box нужно использовать фильтр gettext или postbox_classes_{$id}, но проще и надежнее — перерегистрировать meta box с новым заголовком.

Пример: допустим, вы хотите изменить заголовок стандартного meta box «Отрывок» на «Краткое описание».

function wpwebsite_change_excerpt_meta_box_title() {
    remove_meta_box('postexcerpt', 'post', 'normal');
    add_meta_box('postexcerpt', __('Краткое описание', 'wpwebsite'), 'post_excerpt_meta_box', 'post', 'normal', 'core');
}
add_action('add_meta_boxes', 'wpwebsite_change_excerpt_meta_box_title', 11);

Здесь мы сначала удаляем стандартный meta box с ID postexcerpt, затем добавляем его заново с новым заголовком. Функция post_excerpt_meta_box отвечает за вывод содержимого поля.

Изменение имени поля в пользовательском meta box

Если meta box создан вами или сторонним плагином, то заголовок можно изменить, отредактировав функцию добавления meta box или с помощью фильтра, если он предусмотрен.

Например, если у вас есть meta box с ID wpwebsite_custom_box, добавленный функцией:

add_meta_box('wpwebsite_custom_box', 'Старое имя поля', 'wpwebsite_custom_box_callback', 'post');

То для изменения имени можно написать функцию:

function wpwebsite_change_custom_box_title() {
    remove_meta_box('wpwebsite_custom_box', 'post', 'normal');
    add_meta_box('wpwebsite_custom_box', 'Новое имя поля', 'wpwebsite_custom_box_callback', 'post', 'normal', 'default');
}
add_action('add_meta_boxes', 'wpwebsite_change_custom_box_title', 11);

Практические советы и рекомендации

  • Всегда делайте резервную копию перед изменением meta box’ов.
  • Проверяйте ID и контекст meta box, чтобы не удалить важные элементы.
  • Если изменяете поля плагинов, следите за обновлениями — изменения могут сбрасываться.
  • Для сложных изменений можно использовать плагин Clearfy Pro, который помогает управлять мета-боксами и очисткой админки.

Удаление поля из meta box с помощью JavaScript

Иногда поле нельзя удалить через PHP, особенно если оно встроено в meta box без отдельных ID. Тогда помогает скрипт на JavaScript, который скрывает поле на странице редактирования.

function wpwebsite_admin_hide_meta_field() {
    echo '<script>
    document.addEventListener("DOMContentLoaded", function() {
        var field = document.querySelector("#your_field_id");
        if(field) {
            field.style.display = "none";
        }
    });
    </script>';
}
add_action('admin_footer-post.php', 'wpwebsite_admin_hide_meta_field');
add_action('admin_footer-post-new.php', 'wpwebsite_admin_hide_meta_field');

Замените #your_field_id на селектор нужного поля.

Заключение

Удаление или изменение имени поля в meta box — задача, с которой сталкиваются разработчики при кастомизации WordPress. Важно точно знать ID meta box и использовать стандартные функции remove_meta_box() и add_meta_box(). В сложных случаях помогает JavaScript. Для удобства управления можно использовать инструменты из арсенала WPSHOP.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше