¿Es posible agregar un menú de tipo de publicación personalizado como otro submenú de tipo de publicación personalizado?

25

Actualmente estoy desarrollando un complemento de WordPress que utiliza dos tipos de publicaciones personalizadas. Lo que quiero saber aquí: ¿es posible agregar un menú de tipo de publicación personalizado como submenú de otro tipo de publicación personalizada?

    
pregunta KeepMove 18.08.2013 - 19:00

2 respuestas

50

Sí. Cuando registre su tipo de publicación, debe establecer show_in_menu en la página en la que desea que se muestre.

Agregar un tipo de publicación personalizada como un submenú de Publicaciones

Aquí configuramos el tipo de publicación "películas" para que se incluya en el submenú debajo de Publicaciones.

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

Si tienes una taxonomía registrada para el tipo de publicación personalizada, también será necesario agregarla a la página.

En add_submenu_page() el primer argumento es la página a la que se lo asigna y la última es la barra del menú.

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

Agregar un tipo de publicación personalizada como un submenú de otro tipo de publicación personalizada

Para agregar las páginas a otro tipo de publicación personalizada, incluya el parámetro de cadena de consulta del tipo de publicación junto con los nombres de las páginas.

Para agregar las Películas de CPT y su género de taxonomía en el tipo de publicación Entretenimiento, ajuste el código de esta manera.

edit.php se convierte en edit.php?post_type=entertainment

edit-tags.php se convierte en 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'); 
}
    
respondido por el epilektric 18.08.2013 - 19:29
4

Nuestro tipo de publicación personalizada:

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

Añádalo para el tipo de publicación personalizada existente ("producto" por ejemplo):

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

O agregue para nuestro menú de complementos personalizados:

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

Lea otras preguntas en las etiquetas