Cum să Adaugi o Pagină Sub-Meniu la un Tip de Postare Personalizat?

22 aug. 2012, 16:06:28
Vizualizări: 58.2K
Voturi: 24

Încerc să creez un sub-meniu sub un Tip de Postare Personalizat (Custom Post Type) pe care l-am numit Portfolios.

Când schimb add_submenu_page() cu add_options_page(), acesta afișează corect un nou link sub meniul Setări, dar nu apare sub meniul Portfolios.

Ce fac greșit?

Mai jos este fragmentul meu de cod;

add_action( 'admin_menu', 'mt_add_pages' );

function mt_add_pages() {
    add_submenu_page(
        __( 'portfolios', 'menu-test' ), // Portofolii
        __( 'Test Settings', 'menu-test' ), // Setări Test
        'manage_options',
        'testsettings',
        'mt_settings_page'
    );

    function mt_settings_page() {
        echo "<h2>" . __( 'Test Settings', 'menu-test' ) . "</h2>"; // Setări Test
    }
}
1
Comentarii

Cred că treci slug-ul de părinte incorect, adică „portfolios”. Verifică din nou... în loc de „portfolios”, trebuie să folosești slug-ul tipului tău de post personalizat.

Prince Singh Prince Singh
23 aug. 2013 14:38:17
Toate răspunsurile la întrebare 4
1
45

add_options_page() adaugă automat sub meniul de setări, însă add_submenu_page() îți oferă control asupra locației unde dorești să apară.

Încearcă ceva de genul:

add_submenu_page(
    'edit.php?post_type=portfolios',
    __( 'Setări Test', 'menu-test' ),
    __( 'Setări Test', 'menu-test' ),
    'manage_options',
    'testsettings',
    'mt_settings_page'
);
15 dec. 2012 06:22:45
Comentarii

Codul tău nu va funcționa decât dacă lipsește al treilea argument menu_title. Vezi codex-ul

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

Pentru a extinde exemplul lui @Jai...

Setările mele

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

Tipul personalizat de postare

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

register_post_type( 'foo', $args );

Taxonomia personalizată pentru categorii

            $args = array(
                    'labels'            => array( 'name' => _x( $categoryType, 'taxonomy general name' )),
                    'rewrite'           => array( 'slug' => $categoryType ),
            );

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

Adăugarea categoriilor ca elemente de submeniu

    $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 ian. 2018 20:39:45
1
add_submenu_page('edit.php?post_type='.$this->plugin->posttype, __('Setări', $this->plugin->name), __('Setări', $this->plugin->name), 'manage_options', $this->plugin->name, array(&$this, 'adminPanel'));

adminPanel este numele funcției callback.

3 ian. 2017 07:11:08
Comentarii

Poți să explici puțin mai detaliat?

bravokeyl bravokeyl
3 ian. 2017 08:05:41
0
/**
* Adaugă o pagină de submeniu sub un tip de postare personalizată.
*/
function books_register_ref_page() {
    add_submenu_page(
        'edit.php?post_type=book',
        __( 'Referință pentru Shortcode-uri Cărți', 'textdomain' ),
        __( 'Referință Shortcode', 'textdomain' ),
        'manage_options',
        'books-shortcode-ref',
        'books_ref_page_callback'
    );
}

/**
* Funcția de afișare pentru pagina de submeniu.
*/
function books_ref_page_callback() { 
    ?>
    <div class="wrap">
        <h1><?php _e( 'Referință pentru Shortcode-uri Cărți', 'textdomain' ); ?></h1>
        <p><?php _e( 'Informații utile aici', 'textdomain' ); ?></p>
    </div>
    <?php
}

Legătură către Sursă , Autor: Christina Blust

21 oct. 2018 07:38:08