Intereting Posts
Изменение «Введите название здесь» на основе формата сообщения Проверка входа в систему Постоянная ссылка на пост-перенаправление на категорию без рубрики Shortcode Отображение пользовательских типов сообщений Genesis Child Theme Изменение отображения комментариев Как запустить пользовательскую функцию при изменении статуса сообщения? Должен ли я вставлять ссылки CDN в файл JS или использовать плагин Bootstrap CDN? Как получить контрольный выбор из объекта $ setting, переданного в sanitize_callback Изображения в wp_mail не отображаются Пользовательский тип сообщения: Показать похожие сообщения Застрял создание реальной работы cron (non-wp cron) внутри WordPress Ошибка 310 слишком много перенаправлений после переключения доменов Taxonomy.php Не показывать сообщения Как получить и сохранить содержимое WordPress (html, css, images, videos) из Java-программы? Отображение короткого кода в верхней части страницы

Удаление мета-полей: remove-meta_box () или unset ()?

Я видел два способа удаления мета-полей: remove_meta_box () и unset ().

function TEST_remove_dashboard_widgets(){ remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' ); } add_action('wp_dashboard_setup', 'bmc_remove_dashboard_widgets'); 

против

 function TEST_remove_dashboard_widgets() { global $wp_meta_boxes; unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']); } add_action('wp_dashboard_setup', 'bmc_remove_dashboard_widgets'); не function TEST_remove_dashboard_widgets() { global $wp_meta_boxes; unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']); } add_action('wp_dashboard_setup', 'bmc_remove_dashboard_widgets'); 

remove_meta_box кажется лучше, потому что он явно предназначен только для этого, но я также видел отменную формулировку в нескольких местах.

Почему я должен использовать один против другого?

Solutions Collecting From Web of "Удаление мета-полей: remove-meta_box () или unset ()?"

В случае сомнений пользуйтесь API.

Предположим, что структура $wp_meta_boxes изменится или уйдет один день.

remove_meta_box() все равно будет работать, потому что API – это контракт между ядром и разработчиками. Отключение некоторых ключей в глобальной переменной может сломаться.

unset() проще записать, когда вы хотите удалить целую группу: unset($wp_meta_boxes['dashboard']) явно проще, чем unset($wp_meta_boxes['dashboard']) через каждый отдельный блок. Но более короткий код не всегда лучше, поэтому его нельзя использовать в общедоступном коде.

Обратите внимание: оба метода работают по-разному: unset() удаляет элемент из массива, а remove_meta_box() устанавливает значение элементов в FALSE :

 foreach ( array('high', 'core', 'default', 'low') as $priority ) $wp_meta_boxes[$page][$context][$priority][$id] = false; 

Другие плагины могут полагаться на существование этого элемента – и ломаться после того, как вы использовали unset() .