¿Cómo Añadir una Página de Submenú a un Tipo de Contenido Personalizado?

22 ago 2012, 16:06:28
Vistas: 58.2K
Votos: 24

Estoy tratando de crear un submenú bajo un Tipo de Contenido Personalizado (Custom Post Type) que he llamado Portfolios.

Cuando cambio add_submenu_page() a add_options_page(), muestra correctamente un nuevo enlace bajo el menú de Ajustes, pero no aparece bajo el menú de Portfolios.

¿Qué estoy haciendo mal?

A continuación está mi fragmento de código:

add_action( 'admin_menu', 'mt_add_pages' );

function mt_add_pages() {
    add_submenu_page(
        __( 'portfolios', 'menu-test' ),
        __( 'Ajustes de Prueba', 'menu-test' ),
        'manage_options',
        'testsettings',
        'mt_settings_page'
    );

    function mt_settings_page() {
        echo "<h2>" . __( 'Ajustes de Prueba', 'menu-test' ) . "</h2>";
    }
}
1
Comentarios

creo que estás pasando un slug padre incorrecto, es decir, portfolios. revísalo de nuevo... en lugar de portfolios pasa el slug de tu tipo de publicación personalizada..

Prince Singh Prince Singh
23 ago 2013 14:38:17
Todas las respuestas a la pregunta 4
1
45

add_options_page() automáticamente lo añade debajo de Ajustes, sin embargo add_submenu_page() te da control sobre dónde quieres que aparezca.

Prueba algo como esto:

add_submenu_page(
    'edit.php?post_type=portfolios',
    __( 'Configuraciones de prueba', 'menu-test' ),
    __( 'Configuraciones de prueba', 'menu-test' ),
    'manage_options',
    'testsettings',
    'mt_settings_page'
);
15 dic 2012 06:22:45
Comentarios

Tu código no funcionará a menos que incluyas un tercer argumento de menu_title. Consulta el codex

Rahil Wazir Rahil Wazir
2 nov 2013 13:37:41
0

Para ampliar el ejemplo de @Jai...

Mis Configuraciones

$postType = 'foo';
$categoryType = 'bar';

Tipo de Entrada Personalizada

            $args = array(
                    'labels'             => array('name'=> $postType, ...),
                    'rewrite'            => array('slug' => 'all-'.$postType),
                    'taxonomies'         => array($categoryType)
            );

register_post_type( 'foo', $args );

Taxonomía de Categoría Personalizada

            $args = array(
                    'labels'            => array( 'name' => _x( $categoryType, 'nombre general de la taxonomía' )),
                    'rewrite'           => array( 'slug' => $categoryType ),
            );

register_taxonomy( $categoryType, array( $postType ), $args );

Agregar Categorías como elementos del submenú

    $wp_term = get_categories( 'taxonomy='.$categoryType.'&type='.$postType );
    if ( $wp_term ) {
        foreach ( $wp_term as $term ) {
            // add_submenu_page( string $parent_slug, string $page_title, string $menu_title, string $capability, string $menu_slug,                                                  callable $function = '' )
            add_submenu_page(    'edit.php?post_type='.$postType,      $term->name,        $term->name,        'manage_options',   'edit.php?post_type='.$postType.'&'.$categoryType.'='.$term->slug, '');
        }
    }
20 ene 2018 20:39:45
1
add_submenu_page('edit.php?post_type='.$this->plugin->posttype, __('Configuración', $this->plugin->name), __('Configuración', $this->plugin->name), 'manage_options', $this->plugin->name, array(&$this, 'adminPanel'));

adminPanel es el nombre de la función de callback.

3 ene 2017 07:11:08
Comentarios

¿Puedes explicar un poco más?

bravokeyl bravokeyl
3 ene 2017 08:05:41
0
/**
* Añade una página de submenú bajo un tipo de entrada personalizado padre.
*/
function books_register_ref_page() {
    add_submenu_page(
        'edit.php?post_type=book',
        __( 'Referencia de Shortcodes para Libros', 'textdomain' ),
        __( 'Referencia de Shortcodes', 'textdomain' ),
        'manage_options',
        'books-shortcode-ref',
        'books_ref_page_callback'
    );
}

/**
* Función de visualización para la página de submenú.
*/
function books_ref_page_callback() { 
    ?>
    <div class="wrap">
        <h1><?php _e( 'Referencia de Shortcodes para Libros', 'textdomain' ); ?></h1>
        <p><?php _e( 'Contenido útil aquí', 'textdomain' ); ?></p>
    </div>
    <?php
}

Enlace a la Fuente , Autor: Christina Blust

21 oct 2018 07:38:08