Làm thế nào để thêm liên kết trang lưu trữ loại bài đăng tùy chỉnh vào menu nav?


9

Tôi không thể hình này ra. Dường như không có hộp kiểm hoặc bất cứ thứ gì tương tự trong chức năng để thêm trang lưu trữ loại bài đăng tùy chỉnh mới được tạo vào menu.

Ngoài ra, liên kết phải được kích hoạt, nếu bạn đang ở trên trang. Điều này có lẽ là không thể, nhưng có một số plugin cho nó? Vì tình yêu của tôi, tôi không thể tìm thấy nó :(

Tôi chỉ tìm thấy plugin này có tên Lưu trữ loại bài đăng tùy chỉnh trong Nav Menus , nó không thực sự làm gì cả, nhưng thêm liên kết tùy chỉnh vào menu..với toàn bộ url trang web. Nó không hoạt động hoặc không năng động.

Tôi nghĩ rằng, có lẽ cách dễ nhất là ghi đè wp_nav_menu()và thêm các liên kết của tôi theo cách thủ công và sau đó sử dụng $_GETthông tin để kiểm soát "liên kết hiện đang hoạt động".


Sau khi từ bỏ câu trả lời của Stephen, tôi đã kết thúc với giải pháp này: wordpress.org/support/topic/
khuyên

Câu trả lời:


1

Đây là một phương pháp mà tôi nghĩ nên hoạt động (mặc dù nó chưa được thử nghiệm).

//Hook on to the filter for the (custom) main menu
// 'wp_list_pages' filter is a fallback, when a custom menu isn't being used 
add_filter( 'wp_list_pages', 'new_nav_menu_items' );
add_filter( 'wp_nav_menu_items', 'new_nav_menu_items' );
//Can also hook into a specific menu...
//add_filter( 'wp_nav_menu_{$menu->slug}_items', 'new_nav_menu_items' );

function new_nav_menu_items($items) {
    global $wp_query;
    $class ='';

    //Checks if we are viewing CPT 'myposttype', if so give it the 'active' class.
    if(isset($wp_query->query_vars['post_type'])&& $wp_query->query_vars['post_type']=='myposttype') 
        $class = 'current_page_item';

    //This generates the url of the CPT archive page
    $url = add_query_arg('post_type','myposttype',site_url());

    $myitem = '<li class="'.$class.'"><a href="'.$url.'">My Custom Post Type</a></li>';

    $items = $items . $myitem;
    return $items;
}

Điều này đối với tôi dường như không phải là giải pháp sạch nhất, nhưng tôi không biết cách nào khác. Nếu có, tôi muốn xem nó!

Cuối cùng, url liên kết mà mục tùy chỉnh liên kết đến không 'đẹp' - nhưng bạn có thể làm như vậy nếu bạn mới sử dụng sên CPT (giả sử permalinks tùy chỉnh đang được sử dụng ....)


Cảm ơn vì đã trả lời. Điều này dường như về cơ bản làm việc. Tuy nhiên, định dạng của URL cần một số điều chỉnh. Và tôi đã hy vọng có thể bạn biết về WP nhiều hơn sau đó. Vì vậy, hiện tại url là: example.com/?post_type=myposttype nhưng nên là example.com/myposttype. Có lẽ đơn giản $url = site_url() . 'myposttype';? Và các lớp không được bao gồm, bao gồm cả lớp đang hoạt động.
Kalle H. Väravas

Oh xin lỗi, đã không nhìn thấy $class = '';. Tuy nhiên, tôi không thể có được các lớp bình thường một cách linh hoạt và làm thế nào để làm cho liên kết hiện đang hoạt động?
Kalle H. Väravas

Ôi xin lỗi gấp đôi, Không thấy $wp_query->query_vars['post_type']=='myposttype'. Hoạt động cơ bản. Đây là một cơ sở tốt cho giải pháp năng động hơn chắc chắn, cảm ơn!
Kalle H. Väravas

2

Kể từ WordPress 4.4 (tháng 12 năm 2015), các liên kết lưu trữ Loại bài đăng tùy chỉnh hiện được hỗ trợ chính thức trong lõi WordPress mà không cần bất kỳ mã hoặc plugin của bên thứ ba nào.

Bạn có thể đọc toàn bộ vé Trac # 16075 để thảo luận đầy đủ hoặc bài viết Make WordPress Core để biết tóm tắt về các nhãn bổ sung .

Để kích hoạt mới built-in hỗ trợ cho các liên kết đơn lưu trữ, bài tùy chỉnh loại phải đăng ký với phi falsey giá trị (tức là true) cho has_archive, publicly_queryableshow_in_nav_menus:

add_action( 'init', function () {
    register_post_type( 'movies',
        array(
            'labels' => array(
                'name' => __( 'Movies' ),
                'singular_name' => __( 'Movie' ),
                'archives' => __( 'Movies' ),
            ),
            'public' => true,
            'has_archive' => true,
            'rewrite' => array(
                'slug' => 'movies',
            ),
        )
    );
});

Với những bổ sung này, bạn sẽ thấy một metabox mới trên màn hình quản trị Giao diện> Menu .

Liên kết lưu trữ loại bài đăng có thể được tìm thấy trong tab 'Xem tất cả' trong metabox loại bài đăng:

WordPress Custom Post Type Archive Nav Navus Link

Lưu ý: Bạn có thể cần phải chuyển ngăn kéo "tùy chọn màn hình" và đảm bảo rằng tên "Lưu trữ loại bài đăng" của bạn (ví dụ: Phim) được chọn để xuất hiện trên màn hình Menu.

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.