Bagaimana cara menambahkan tautan halaman arsip jenis posting khusus ke menu nav?

9

Saya tidak tahu ini. Tampaknya tidak ada kotak centang atau fungsi serupa lainnya untuk menambahkan halaman arsip jenis pos kustom yang baru dibuat ke dalam menu.

Juga tautan harus aktif, jika Anda berada di halaman. Ini mungkin tidak mungkin, tetapi apakah ada beberapa plugin untuk itu? Demi cintaku, aku tidak dapat menemukannya :(

Saya hanya menemukan plugin ini yang disebut Arsip Jenis Tulisan Kustom di Nav Menu , yang tidak benar-benar melakukan apa-apa, tetapi menambahkan tautan khusus ke menu..dengan url situs lengkap. Itu tidak aktif atau tidak terlalu dinamis.

Saya pikir, mungkin cara termudah adalah mengganti wp_nav_menu()dan menambahkan tautan secara manual dan kemudian menggunakan $_GETinformasi untuk mengontrol "tautan yang saat ini aktif".

Kalle H. Väravas
sumber
Setelah mencari jawaban Stephen, saya berakhir dengan solusi ini: wordpress.org/support/topic/... Semoga ini bisa membantu seseorang di masa depan :)
Kalle H. Väravas

Jawaban:

1

Ini adalah salah satu metode yang saya pikir harus bekerja (walaupun tidak diuji).

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

Bagi saya ini bukan solusi yang paling bersih, tetapi saya tidak tahu cara lain. Jika ada, saya ingin melihatnya!

Akhirnya, tautan url tautan item khusus tidak 'cantik' - tetapi Anda dapat membuatnya jadi jika Anda baru menggunakan siput CPT (dengan asumsi permalinks kustom sedang digunakan ....)

Stephen Harris
sumber
Terima kasih telah menjawab. Ini pada dasarnya tampaknya berhasil. Namun, format URL perlu beberapa penyesuaian. Dan saya berharap mungkin Anda tahu tentang WP lebih dari saya. Jadi saat ini url adalah: example.com/?post_type=myposttype tetapi harus menjadi example.com/myposttype. Mungkin sederhana $url = site_url() . 'myposttype';? Dan kelas tidak termasuk, termasuk yang sedang aktif.
Kalle H. Väravas
Oh maaf, tidak melihat $class = '';. Namun, tidak bisakah saya mendapatkan kelas normal secara dinamis dan juga bagaimana membuat tautan aktif saat ini berfungsi?
Kalle H. Väravas
Oh, dobel maaf, tidak melihat $wp_query->query_vars['post_type']=='myposttype'. Bekerja pada dasarnya. Ini adalah dasar yang baik untuk solusi yang lebih dinamis, terima kasih!
Kalle H. Väravas
2

Pada WordPress 4.4 (Desember 2015), tautan arsip Jenis Kiriman Khusus sekarang secara resmi didukung di inti WordPress tanpa memerlukan kode pihak ketiga atau plugin.

Anda dapat membaca seluruh tiket Trac # 16075 untuk diskusi lengkap atau posting Make WordPress Core untuk ringkasan label tambahan .

Untuk mengaktifkan dukungan internal yang baru untuk tautan menu arsip, jenis kiriman khusus harus didaftarkan dengan nilai non-falsey (yaitu benar) untuk has_archive, publicly_queryabledan show_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',
            ),
        )
    );
});

Dengan tambahan ini, Anda akan melihat metabox baru di layar admin Appearance> Menus .

Tautan arsip jenis posting dapat ditemukan di bawah tab 'Lihat Semua' di dalam metabox tipe posting:

Tulisan Khusus Jenis Kiriman WordPress Link Nav Menu

Catatan: Anda mungkin perlu menghidupkan laci "opsi layar" dan memastikan bahwa nama "Arsip Jenis Kiriman" Anda (misalnya Film) dicentang agar muncul di layar Menu.

rjb
sumber