วิธีเพิ่มเพจเมนูย่อยให้กับประเภทโพสต์ที่กำหนดเองได้อย่างไร


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>";
    }
}

ฉันคิดว่าคุณกำลังผ่านบุ้งผู้ปกครองแบบรวมเช่นพอร์ตการลงทุน ตรวจสอบอีกครั้ง ... การแทนที่พอร์ตการลงทุนผ่านทากของโพสต์แบบกำหนดเองของคุณ ..
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รหัสของคุณจะไม่ทำงานจนกว่าคุณจะหายไปอาร์กิวเมนต์ที่สามของ ดู codex
Rahil Wazir

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

มีแผง admin คือชื่อฟังก์ชั่นการโทรกลับ


1
คุณช่วยอธิบายเพิ่มเติมอีกหน่อยได้ไหม?
bravokeyl

4

หากต้องการขยายตัวอย่าง @Jai ...

การตั้งค่าของฉัน

$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
}

ลิงก์ไปยังแหล่งที่มาผู้แต่ง: Christina Blust

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.