wp_nav_menu_post_type_meta_boxes() WP 3.0.0

Створює метабокс під будь-який тип посту в акордеоні на сторінці меню.

Працює на основі функції get_post_types() з параметром 'show_in_nav_menus' => true.

Функція використовується двигуном і як правило не призначена для використання будь-де.

Для відображення подібних метабоксів для таксономії використовується wp_nav_menu_taxonomy_meta_boxes() .

Кожен отриманий об’єкт типу посту пропускаються через хук-фільтр nav_menu_meta_box_object , у якому можна змінити, наприклад, заголовок метабоксу чи взагалі скасувати його висновок в акордеоні.

Метабокс додається функцією add_meta_box() за наступним шаблоном:

add_meta_box( "add-post-type-{$id}",
	$post_type->labels->name,
	'wp_nav_menu_item_post_type_meta_box',
	'nav-menus',
	'side',
	$priority,
	$post_type
);

Де:

  • $post_type->name– ім’я посту, наприклад post, page тощо.
  • $id= $post_type->name.
  • $priority= ( ‘page’ == $post_type->name ? ‘core’ : ‘default’ ).
  • $post_type– Об’єкт типу посту.
Працює на основі:
add_meta_box()

Хуки з функції

Повертає

null. Нічого.

Використання

wp_nav_menu_post_type_meta_boxes();

Приклади

0

#1 Використовується в ядрі WP

Приклад використання дивіться у коді функції wp_nav_menu_setup() .

список змін

З версії 3.0.0Введено.

Код wp_nav_menu_post_type_meta_boxes() WP 6.0.2

function wp_nav_menu_post_type_meta_boxes() {
	$post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'object' );

	if (! $post_types) {
		return;
	}

	foreach ( $post_types as $post_type ) {
		/**
		 * Filters whether a menu items meta box буде added for the current
		 * object type.
		 *
		 * If a falsey value is returned instead of an object, the menu items
		 * meta box for the current meta box object не буде added.
		 *
		 * @ Since 3.0.0
		 *
		 * @param WP_Post_Type|false $post_type current object to add a menu items
		 * meta box for.
		 */
		$post_type = apply_filters( 'nav_menu_meta_box_object', $post_type );
		if ($post_type) {
			$id = $post_type->name;
			// Give pages a higher priority.
			$priority = ( 'page' === $post_type->name ? 'core' : 'default' );
			add_meta_box( "add-post-type-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', $priority, $post_type );
		}
	}
}