В настоящее время я разрабатываю плагин WordPress, который использует два пользовательских типа сообщений. Что я хочу знать здесь: возможно ли добавить пользовательское меню типа записи в качестве подменю другого пользовательского типа сообщения?
В настоящее время я разрабатываю плагин WordPress, который использует два пользовательских типа сообщений. Что я хочу знать здесь: возможно ли добавить пользовательское меню типа записи в качестве подменю другого пользовательского типа сообщения?
Да. Когда вы регистрируете свой тип поста, вам нужно выбрать show_in_menu
ту страницу, на которой вы хотите, чтобы он отображался.
Здесь мы устанавливаем тип записи «фильмы», который будет включен в подменю «Сообщения».
register_post_type( 'movies',
array(
'labels' => array(
'name' => __( 'Movies' ),
'singular_name' => __( 'Movie' )
),
'public' => true,
'has_archive' => true,
'show_in_menu' => 'edit.php'
)
);
Если у вас есть таксономия, зарегистрированная для пользовательского типа записи, ее также необходимо добавить на страницу.
В add_submenu_page()
первом аргументе указывается страница, на которую он назначен, а в последнем - фрагмент меню.
add_action('admin_menu', 'my_admin_menu');
function my_admin_menu() {
add_submenu_page('edit.php', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre');
}
Чтобы добавить страницы в другой пользовательский тип записи, включите параметр строки запроса типа записи вместе с именами страниц.
Чтобы добавить фильмы CPT и жанр таксономии под типом «Развлечения», настройте код следующим образом.
edit.php
становится edit.php?post_type=entertainment
edit-tags.php
становится edit-tags.php?taxonomy=genre&post_type=entertainment
register_post_type( 'movies',
array(
'labels' => array(
'name' => __( 'Movies' ),
'singular_name' => __( 'Movie' )
),
'public' => true,
'has_archive' => true,
'show_in_menu' => 'edit.php?post_type=entertainment'
)
);
add_action('admin_menu', 'my_admin_menu');
function my_admin_menu() {
add_submenu_page('edit.php?post_type=entertainment', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre&post_type=entertainment');
}
show_in_menu
атрибут, не работал для меня.Наш пользовательский тип сообщения:
Добавьте его для существующего Пользовательского Типа Сообщения (например, «продукт»):
Или добавьте для нашего меню плагинов:
источник