Gezinme menüsüne özel yazı tipi arşiv sayfası bağlantıları nasıl eklenir?


9

Bunu anlayamıyorum. Yeni oluşturulan özel gönderi türü arşiv sayfasını menüye eklemek için herhangi bir onay kutusu veya benzer bir şey yok gibi görünüyor.

Ayrıca, sayfadaysanız bağlantının etkin olması gerekir. Bu muhtemelen mümkün değil, ama bunun için bir eklenti var mı? Aşkım için bulamıyorum :(

Nav Menülerinde Özel Mesaj Türü Arşivleri adlı bu eklentiyi buldum , bu gerçekten hiçbir şey yapmıyor, ancak menüye özel bağlantı ekliyor ... tam site-url ile. Aktif değil ya da çok dinamik değil.

Ben muhtemelen, en kolay yolu geçersiz kılmak wp_nav_menu()ve bağlantılarımı manuel olarak eklemek ve daha sonra $_GET"şu anda etkin bağlantı" kontrol etmek için bilgi kullanmak olacağını düşündüm .


Stephen'ın cevabını çektikten sonra şu çözümü buldum: wordpress.org/support/topic/… Umarım gelecekte birine yardımcı olur :)
Kalle H. Väravas

Yanıtlar:


1

Bu çalışması gerektiğini düşünüyorum (test olmasa da) bir yöntemdir.

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

Bu bana en iyi çözüm gibi gözükmüyor, ama başka bir yol bilmiyorum. Varsa, görmek isterim!

Son olarak, özel öğeye bağlanan bağlantı url'si 'güzel' değil - ancak CPT'nin yeni bilgisini (eğer özel kalıcı bağlantılar kullanıldığını varsayarak ...)


Cevap verdiğiniz için teşekkür ederim. Bu temelde işe yarıyor gibi görünüyor. Ancak, URL'nin biçimlendirilmesi için bazı ayarlamalar yapılması gerekir. Ve belki de WP'yi I'den daha çok biliyorsunuzdur. Yani şu anda URL: example.com/?post_type=myposttype ama example.com/myposttype olmalı. Belki basitçe $url = site_url() . 'myposttype';? Ve şu anda aktif olanlar da dahil olmak üzere sınıflar dahil edilmiyor.
Kalle H. Väravas

Üzgünüm, görmedim $class = '';. Ancak, normal sınıfları dinamik olarak alamıyorum ve aynı zamanda şu anda etkin bağlantı çalışmak için nasıl?
Kalle H. Väravas

Ah çift üzgünüm, görmedim $wp_query->query_vars['post_type']=='myposttype'. Temelde çalışır. Bu kesinlikle daha dinamik bir çözüm için iyi bir temel, teşekkürler!
Kalle H. Väravas

2

WordPress 4.4 (Aralık 2015) itibarıyla, Özel Posta Türü arşiv bağlantıları artık herhangi bir üçüncü taraf kodu veya eklentisi gerekmeden WordPress çekirdeğinde resmi olarak desteklenmektedir .

Tam bir tartışma için Trac # 16075 biletinin tamamını veya ek etiketlerin bir özeti için WordPress Çekirdek Yap'ı okuyabilirsiniz .

Etkinleştirmek için yeni yerleşik arşiv menü bağlantıları için destek, özel yayın türleri var olmayan Falsey (yani true) için değerlerin kayıtlı has_archive, publicly_queryableve 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',
            ),
        )
    );
});

Bu eklemelerle, Görünüm> Menüler yönetici ekranında yeni bir meta kutu göreceksiniz.

Gönderi türü arşiv bağlantısı, gönderi türü meta kutusundaki 'Tümünü Görüntüle' sekmesinde bulunabilir:

WordPress Özel Yazı Tipi Arşivi Nav Menüler Bağlantısı

Not: "Ekran seçenekleri" çekmecesini açmanız ve "Yazı Türü Arşivleri" adınızın (örn. Filmler) Menüler ekranında görünmesi için işaretlendiğinden emin olmanız gerekebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.