私は現在2つのカスタム投稿タイプを使用しているワードプレスプラグインを開発しています。ここで私が知りたいことは:それは別のカスタム投稿タイプのサブメニューとしてカスタム投稿タイプメニューを追加することは可能ですか?
はい。投稿タイプを登録するときは、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');
}
ページを他のカスタム投稿タイプに追加するには、投稿タイプのクエリ文字列パラメータとページ名を含めます。
投稿タイプEntertainmentの下にCPT Moviesとその分類のジャンルを追加するには、このようにコードを調整します。
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');
}
私たちのカスタム投稿タイプ:
$args['show_in_menu'] = false;
register_post_type('custom_plugin_post_type', $args);
既存のカスタム投稿タイプ(たとえば "product")に彼を追加します。
$existing_CPT_menu = 'edit.php?post_type=product';
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page($existign_CPT_menu, 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);
または、カスタムプラグインメニューを追加します。
// Create plugin menu
add_menu_page('MyPlugin', 'MyPlugin', 'manage_options', 'myPluginSlug', 'callback_render_plugin_menu');
// Create submenu with href to view custom_plugin_post_type
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page('myPluginSlug', 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);