nav_menu_meta_box_objectхук-фильтрWP 3.0.0

Позволяет изменить объект, который используется для формирования метабокса в аккордеоне с выбором пунктов меню на странице создания меню в админке.

Это может быть объект класса:

  • WP_Post_Type у метабоксов "Записи", "Страницы" и произвольных типов постов
  • WP_Taxonomy у метабоксов "Рубрики", "Метки", "Формат" и произвольных таксономий.

Если вместо объекта возвратить ложное значение (false, null и так далее), то текущий метабокс добавлен в аккордеон не будет.

Пример содержания объекта у метабокса "Записи":

WP_Post_Type Object(
	[name]   => post
	[label]  => Записи
	[labels] => stdClass Object(
			[name]                  => Записи
			[singular_name]         => Запись
			[add_new]               => Добавить новую
			[add_new_item]          => Добавить запись
			[edit_item]             => Редактировать запись
			[new_item]              => Новая запись
			[view_item]             => Просмотреть запись
			[view_items]            => Просмотр записей
			[search_items]          => Поиск записей
			[not_found]             => Записей не найдено.
			[not_found_in_trash]    => Записей в корзине не найдено.
			[parent_item_colon]     =>
			[all_items]             => Все записи
			[archives]              => Архивы записей
			[attributes]            => Свойства записи
			[insert_into_item]      => Вставить в запись
			[uploaded_to_this_item] => Загруженные для этой записи
			[featured_image]        => Изображение записи
			[set_featured_image]    => Установить изображение записи
			[remove_featured_image] => Удалить изображение записи
			[use_featured_image]    => Использовать как изображение записи
			[filter_items_list]     => Фильтровать список записей
			[items_list_navigation] => Навигация по списку записей
			[items_list]            => Список записей
			[menu_name]             => Записи
			[name_admin_bar]        => Запись
		)

	[description]           =>
	[public]                => 1
	[hierarchical]          =>
	[exclude_from_search]   =>
	[publicly_queryable]    => 1
	[show_ui]               => 1
	[show_in_menu]          => 1
	[show_in_nav_menus]     => 1
	[show_in_admin_bar]     => 1
	[menu_position]         => 5
	[menu_icon]             =>
	[capability_type]       => post
	[map_meta_cap]          => 1
	[register_meta_box_cb]  =>
	[taxonomies]            => Array()

	[has_archive]       =>
	[query_var]         =>
	[can_export]        => 1
	[delete_with_user]  => 1
	[_builtin]          => 1
	[_edit_link]        => post.php?post=%d
	[cap]               => stdClass Object(
			[edit_post]               => edit_post
			[read_post]               => read_post
			[delete_post]             => delete_post
			[edit_posts]              => edit_posts
			[edit_others_posts]       => edit_others_posts
			[publish_posts]           => publish_posts
			[read_private_posts]      => read_private_posts
			[read]                    => read
			[delete_posts]            => delete_posts
			[delete_private_posts]    => delete_private_posts
			[delete_published_posts]  => delete_published_posts
			[delete_others_posts]     => delete_others_posts
			[edit_private_posts]      => edit_private_posts
			[edit_published_posts]    => edit_published_posts
			[create_posts]            => edit_posts
		)

	[rewrite]               =>
	[show_in_rest]          => 1
	[rest_base]             => posts
	[rest_controller_class] => WP_REST_Posts_Controller
	[_default_query]        => Array(
			[post_status] => publish
		)

)

Использование

add_filter( 'nav_menu_meta_box_object', 'wp_kama_nav_menu_meta_box_object_filter' );

/**
 * Function for `nav_menu_meta_box_object` filter-hook.
 * 
 * @param WP_Post_Type|false $post_type The current object to add a menu items meta box for.
 *
 * @return WP_Post_Type|false
 */
function wp_kama_nav_menu_meta_box_object_filter( $post_type ){

	// filter...
	return $post_type;
}
$meta_box_object(объект)
Текущей объект для формирования метабокса в аккордеоне.

Примеры

0

#1 Изменим заголовок метабокса "Рубрики".

add_filter( 'nav_menu_meta_box_object', function ( $obj ) {
	if ( 'category' == $obj->name  ) {
		$obj->labels->name = 'Мои рубрики';
	}

	return $obj;
} );
0

#2 Удалим метабокс "Формат".

add_filter( 'nav_menu_meta_box_object', function ( $obj ) {
	if ( 'post_format' == $obj->name ) {
		$obj = null;
	}

	return $obj;
} );

Список изменений

С версии 3.0.0 Введена.

Где вызывается хук

wp_nav_menu_post_type_meta_boxes()
nav_menu_meta_box_object
wp_ajax_menu_get_metabox()
nav_menu_meta_box_object
wp_nav_menu_taxonomy_meta_boxes()
nav_menu_meta_box_object
wp-admin/includes/nav-menu.php 260
$post_type = apply_filters( 'nav_menu_meta_box_object', $post_type );
wp-admin/includes/ajax-actions.php 1889
$item = apply_filters( 'nav_menu_meta_box_object', $menus_meta_box_object );
wp-admin/includes/nav-menu.php 293
$tax = apply_filters( 'nav_menu_meta_box_object', $tax );

Где используется хук в WordPress

wp-admin/includes/admin-filters.php 53
add_filter( 'nav_menu_meta_box_object', '_wp_nav_menu_meta_box_object' );