Làm cách nào để thêm một trang menu phụ vào loại bài đăng tùy chỉnh?


15

Tôi đang cố gắng tạo một menu phụ theo Loại bài đăng tùy chỉnh mà tôi đã đặt tên là Danh mục đầu tư.

Khi tôi thay đổi add_submenu_page()đến add_options_page(), nó một cách chính xác cho thấy một liên kết mới trong menu Settings, nhưng nó không hiển thị dưới menu Danh mục đầu tư.

Tôi đang làm gì sai?

Dưới đây là đoạn mã của tôi;

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

Tôi nghĩ rằng bạn đang vượt qua sên cha mẹ incorrent, tức là danh mục đầu tư. kiểm tra lại ... tại chỗ của danh mục đầu tư vượt qua sên của loại bài đăng tùy chỉnh của bạn ..
codepixlabs

Câu trả lời:


31

add_options_page()tự động thêm nó vào bên dưới cài đặt, tuy nhiên add_submenu_page()cho phép bạn kiểm soát nơi bạn muốn nó hiển thị.

Hãy thử một cái gì đó như thế này:

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

1
Mã của bạn sẽ không hoạt động trừ khi, bạn đang thiếu đối số thứ ba menu_title. Xem 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'));

có bảng quản trị là một tên hàm gọi lại.


1
Bạn có thể giải thích thêm một chút không?
bravokeyl

4

Để mở rộng trên ví dụ @Jai ...

Cài đặt của tôi

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

Loại bài tùy chỉnh

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

register_post_type( 'foo', $args );

Phân loại tùy chỉnh

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

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

Thêm danh mục làm mục con

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

Liên kết đến nguồn , Tác giả: Christina Blust

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.