É possível adicionar um menu de tipo de postagem personalizado como outro submenu de tipo de postagem personalizado

25

Atualmente, desenvolvo um plug-in para wordpress que usa dois tipos de postagem personalizados. O que eu quero saber aqui: é possível adicionar um menu de tipo de postagem personalizado como o submenu de outro tipo de postagem personalizada?

    
por KeepMove 18.08.2013 / 19:00
fonte

2 respostas

50

Sim. Ao registrar seu tipo de postagem, você precisa definir show_in_menu na página em que deseja exibi-lo.

Adicionando um tipo de postagem personalizado como um submenu de Postagens

Aqui, definimos o tipo de postagem "filmes" a ser incluído no submenu em Postagens.

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php'
    )
);

Se você tem uma taxonomia registrada no tipo de postagem personalizada, ela precisará ser adicionada à página também.

Em add_submenu_page() o primeiro argumento é a página a ser atribuída e o último é o menu slug. / p>

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'); 
}  

Adicionando um tipo de postagem personalizada como um submenu de outro tipo de postagem personalizada

Para adicionar as páginas a outro tipo de postagem personalizada, inclua o parâmetro de string de consulta do tipo de postagem junto com os nomes das páginas.

Para adicionar os Filmes CPT e sua taxonomia Gênero sob o tipo de postagem Entretenimento, ajuste o código como este.

edit.php torna-se edit.php?post_type=entertainment

edit-tags.php torna-se 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'); 
}
    
por epilektric 18.08.2013 / 19:29
fonte
4

Nosso tipo de postagem personalizada:

$args['show_in_menu'] = false;
register_post_type('custom_plugin_post_type', $args);

Adicione-o a um tipo de postagem personalizado existente ("produto", por exemplo):

$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);

Ou adicione nosso menu de plug-in personalizado:

// 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);
    
por ConConovaloff 14.03.2017 / 12:40
fonte