Có thể thêm Menu loại bài đăng tùy chỉnh như một menu phụ loại bài đăng tùy chỉnh khác


28

Tôi hiện đang phát triển một plugin wordpress đang sử dụng hai loại bài đăng tùy chỉnh. Những gì tôi muốn biết ở đây: có thể thêm một menu loại bài tùy chỉnh như một menu phụ của loại bài tùy chỉnh khác?

Câu trả lời:


59

Vâng. Khi bạn đăng ký loại bài đăng của mình, bạn cần đặt show_in_menuvào trang bạn muốn nó được hiển thị trên đó.

Thêm loại bài đăng tùy chỉnh dưới dạng menu phụ của Bài đăng

Ở đây chúng tôi đặt loại bài đăng "phim" được đưa vào menu phụ bên dưới Bài đăng.

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php'
    )
);

Nếu bạn có một phân loại đăng ký cho loại bài tùy chỉnh, nó cũng sẽ cần phải được thêm vào trang.

Trong add_submenu_page()đối số đầu tiên là trang để gán nó và cuối cùng là slug menu.

add_action('admin_menu', 'my_admin_menu'); 
function my_admin_menu() { 
    add_submenu_page('edit.php', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre'); 
}  

Thêm loại bài đăng tùy chỉnh làm menu phụ của loại bài đăng tùy chỉnh khác

Để thêm các trang vào loại bài đăng tùy chỉnh khác, bao gồm tham số chuỗi truy vấn của loại bài đăng cùng với tên trang.

Để thêm Phim CPT và Thể loại phân loại của nó theo loại bài Giải trí, hãy điều chỉnh mã như thế này.

edit.php trở thành edit.php?post_type=entertainment

edit-tags.php trở thành edit-tags.php?taxonomy=genre&post_type=entertainment

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php?post_type=entertainment'
    )
);

add_action('admin_menu', 'my_admin_menu'); 
function my_admin_menu() { 
    add_submenu_page('edit.php?post_type=entertainment', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre&post_type=entertainment'); 
}

2
Xin chào, cảm ơn Nó hoạt động. Nhưng menu phụ cpt bị mất menu con.
Ari

Tôi đã cập nhật câu trả lời của mình với cách bao gồm các nguyên tắc phân loại.
epilektric

Chào cảm ơn! Tôi đã tìm ra cách để làm điều đó! Nhưng có thể là của bạn sẽ cho một kết quả tốt hơn!
Ari

các show_in_menuthuộc tính, không làm việc cho tôi.
Francisco Corrales Morales

Xin lỗi vì đã lặp lại. Để menu menu con và menu con được tô sáng, bạn cần cung cấp cho WP thêm một số thông tin. Ok, tham số 'show_in_menu' làm cho menu con trở thành hiện tại / được tô sáng khi 'my_post_type' xuất hiện trên màn hình. Bây giờ, chúng ta cũng cần thêm một hành động khác, điều đó sẽ làm nổi bật menu cha. Bạn có thể thử điều này: add_filter ('Parent_file', 'menu_highlight')); chức năng menu_highlight ($ Parent_file) {toàn cầu $ plugin_page, $ post_type; if ('my_post_type' == $ post_type) {$ plugin_page = 'edit.php? post_type = my_post_type'; // tên hook menu con} return $ Parent_file; }
TomeeNS

6

Loại bài tùy chỉnh của chúng tôi:

$args['show_in_menu'] = false;
register_post_type('custom_plugin_post_type', $args);

Thêm anh ấy cho Loại bài đăng tùy chỉnh hiện tại ("sản phẩm" chẳng hạn):

$existing_CPT_menu = 'edit.php?post_type=product';
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page($existign_CPT_menu, 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);

Hoặc thêm cho menu plugin tùy chỉnh của chúng tôi:

// Create plugin menu
add_menu_page('MyPlugin', 'MyPlugin', 'manage_options', 'myPluginSlug', 'callback_render_plugin_menu');

// Create submenu with href to view custom_plugin_post_type
$link_our_new_CPT = 'edit.php?post_type=custom_plugin_post_type';
add_submenu_page('myPluginSlug', 'SubmenuTitle', 'SubmenuTitle', 'manage_options', $link_our_new_CPT);

Cảm ơn! Nó hữu ích cho tôi.
NSukonny
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.