Як додати користувацькі посилання на сторінку архіву типу публікацій до меню nav?


9

Я не можу цього зрозуміти. Здається, що немає прапорця або чогось подібного у функції, щоб додати в меню новостворену спеціальну сторінку архіву типу публікації.

Також посилання має бути активним, якщо ви перебуваєте на цій сторінці. Це, мабуть, неможливо, але чи є якийсь плагін для нього? Через кохання мене не можу знайти :(

Я лише знайшов цей плагін під назвою Спеціальні архіви поштового зв’язку в меню Nav , який насправді нічого не робить, але додайте в меню користувальницьке посилання..з повним URL-адресом сайту. Він не працює або не дуже динамічний.

Я подумав, що, мабуть, найпростішим способом було б переосмислити wp_nav_menu()та додати мої посилання вручну, а потім використовувати $_GETінформацію для управління "поточно активною ланкою".


Отримавши відповідь Стівена, я закінчився цим рішенням: wordpress.org/support/topic/… Сподіваюся, це допоможе комусь у майбутньому :)
Kalle H. Väravas

Відповіді:


1

Це один метод, який, на мій погляд, повинен працювати (хоча він не перевірений).

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

Мені це здається не найчистішим рішенням, але я не знаю іншого способу. Якщо є, я хотів би це побачити!

Нарешті, URL-адреса посилання, на яку посилається користувацький елемент, не є "досить" - але ви можете зробити це так, якщо ви створили новий слуп CPT (якщо використовуватись користувацькі постійні посилання ....)


Дякую за відповідь. Це, здається, в основному працює. Однак для форматування URL потрібне певне налаштування. І я сподівався, можливо, ви знаєте про WP більше, ніж я. Тож наразі URL-адреса: example.com/?post_type=myposttype, але має бути example.com/myposttype. Може просто $url = site_url() . 'myposttype';? І заняття не включаються, включаючи активний на даний момент.
Kalle H. Väravas

Пробачте, не побачив $class = '';. Однак не можу я отримувати нормальні класи динамічно, а також як змусити активну в даний час посилання працювати?
Kalle H. Väravas

Про подвійне вибачення, не бачив $wp_query->query_vars['post_type']=='myposttype'. Працює в основному. Це хороша основа для більш динамічного рішення напевно, дякую!
Kalle H. Väravas

2

Станом на WordPress 4.4 (грудень 2015 року), посилання на архів користувальницьких типів тепер офіційно підтримуються в ядрі WordPress без необхідності будь-якого стороннього коду чи плагінів.

Ви можете прочитати весь квиток на Trac # 16075 для повного обговорення або повідомлення Make WordPress Core, щоб отримати короткий опис додаткових міток .

Для того, щоб включити новий вбудована підтримку для архівних посилань меню, призначені для користувача поштові типів повинні зареєстровані без falsey (тобто справжні) значення has_archive, publicly_queryableі 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',
            ),
        )
    );
});

За допомогою цих доповнень ви побачите нове метабокс на екрані « Зовнішній вигляд> меню» .

Посилання архіву типу публікацій можна знайти на вкладці "Переглянути всі" в метабоксі типу публікації:

WordPress Спеціальний архів типу публікації Посилання з навігаційних меню

Примітка. Можливо, вам знадобиться перемкнути ящик "Параметри екрана" та переконатися, що ім'я "Архів публікацій типу" (наприклад, Фільми) встановлено, щоб воно відображалося на екрані меню.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.