कस्टम पोस्ट प्रकार में उप मेनू पेज कैसे जोड़ें?


17

मैं एक कस्टम पोस्ट प्रकार के तहत उप-मेनू बनाने की कोशिश कर रहा हूं जिसका नाम मैंने पोर्टफोलियो रखा है।

जब मैं बदलने add_submenu_page()के लिए add_options_page(), इसे सही ढंग से सेटिंग मेनू के अंतर्गत एक नई कड़ी से पता चलता है, लेकिन यह पोर्टफ़ोलियो मेनू के तहत नहीं दिखाती है।

मैं क्या गलत कर रहा हूं?

नीचे मेरा कोड स्निपेट है;

add_action( 'admin_menu', 'mt_add_pages' );

function mt_add_pages() {
    add_submenu_page(
        __( 'portfolios', 'menu-test' ),
        __( 'Test Settings', 'menu-test' ),
        'manage_options',
        'testsettings',
        'mt_settings_page'
    );

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

मुझे लगता है कि आप औसत अभिभावक स्लग, यानी पोर्टफोलियो से गुजर रहे हैं। इसे फिर से जाँच ... विभागों का inplace अपने कस्टम पोस्ट प्रकार के स्लग पारित ..
codepixlabs

जवाबों:


32

add_options_page()स्वचालित रूप से इसे नीचे की सेटिंग्स में जोड़ add_submenu_page()देता है , हालाँकि आपको यह नियंत्रित करना है कि आप इसे कहाँ दिखाना चाहते हैं।

कुछ इस तरह की कोशिश करो:

add_submenu_page(
    'edit.php?post_type=portfolios',
    __( 'Test Settings', 'menu-test' ),
    __( 'Test Settings', 'menu-test' ),
    'manage_options',
    'testsettings',
    'mt_settings_page'
);

1
आपका कोड तब तक काम नहीं करेगा जब तक आप तीसरे तर्क को याद नहीं कर रहे हैं menu_title। कोडेक्स देखें
राहिल वज़ीर

4
add_submenu_page('edit.php?post_type='.$this->plugin->posttype, __('Settings', $this->plugin->name), __('Settings', $this->plugin->name), 'manage_options', $this->plugin->name, array(&$this, 'adminPanel'));

व्यवस्थापक पैनल है एक कॉलबैक फ़ंक्शन नाम।


1
क्या आप थोड़ा और समझा सकते हैं?
bravokeyl

4

@ जय उदाहरण पर विस्तार करने के लिए ...

मेरी सेटिंग्स

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

कस्टम पोस्ट प्रकार

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

register_post_type( 'foo', $args );

कस्टम श्रेणी वर्गीकरण

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

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

सबमेनू आइटम के रूप में श्रेणियां जोड़ें

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

1
/**
* Adds a submenu page under a custom post type parent.
*/
function books_register_ref_page() {
    add_submenu_page(
        'edit.php?post_type=book',
        __( 'Books Shortcode Reference', 'textdomain' ),
        __( 'Shortcode Reference', 'textdomain' ),
        'manage_options',
        'books-shortcode-ref',
        'books_ref_page_callback'
    );
}

/**
* Display callback for the submenu page.
*/
function books_ref_page_callback() { 
    ?>
    <div class="wrap">
        <h1><?php _e( 'Books Shortcode Reference', 'textdomain' ); ?></h1>
        <p><?php _e( 'Helpful stuff here', 'textdomain' ); ?></p>
    </div>
    <?php
}

लिंक टू सोर्स , लेखक: क्रिस्टीना ब्लास्ट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.