get_template_part, если страница имеет собственную таксономию - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь показать другое меню заголовка в зависимости от того, к какой категории была добавлена ​​страница или сообщение. Я создал две таксономии набора инструментов, категории и отели.

Я хочу, чтобы у всех отелей было свое меню, lo go и меню бронирования, но я не могу заставить php работать и нацеливаться категории.

Я пробовал несколько фрагментов, например этот:

*< ?php if( has_term('skaga', 'hoteller') {

get_template_part ('включает в себя / partials / header / header-menu-skaga' ); }?> *

Я также пробовал другой, который работал на другом сайте, но нацелен на две таксономии, и мне нужна только одна на него.

*< ?php if( has_term('puder', 'produkttype') || has_term('senge', 'produkttype')) {

get_template_part (' partials / section / section ',' trustpilot '); }?> *

Я надеюсь, что кто-то может пролить свет на то, что я делаю неправильно. Вся помощь очень ценится!

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 января 2020

@ Benj

Привет, Бен,

спасибо за ваш ответ.

Я попробовал это и попытался и еще, и если да, то для остальных таксономий , поэтому они получают get_ еще одну часть шаблона, но безуспешно.

Вот как я пытался использовать его, вы можете определить неправильную часть?

function has_custom_taxonomy_term($termSlug, $taxonomy, $postId = null) {
$terms = get_the_terms($postId, $taxonomy);
if (isset($terms->errors)) {
    // taxonomy doesn't exist
    return false;
}

return array_search($termSlug, array_column($terms, 'slug')) !== false;
 }
if (has_custom_taxonomy_term('sabrokro', 'hoteller')) {
get_template_part( 'includes/partials/header/header-menu-sabrokro' ); 
}
elseif (has_custom_taxonomy_term('odder-parkhotel', 'hoteller')) {
get_template_part( 'includes/partials/header/header-menu-odder' ); 
}
elseif (has_custom_taxonomy_term('skaga', 'hoteller')) {
get_template_part( 'includes/partials/header/header-menu-skaga' ); 
}
elseif (has_custom_taxonomy_term('hotel-hanstholm', 'hoteller')) {
get_template_part( 'includes/partials/header/header-menu-hanstholm' );
}

Еще раз спасибо!

0 голосов
/ 09 января 2020

Я не уверен, почему функция WP core has_term() не работает в этом случае, но вы могли бы сделать что-то вроде следующего, используя get_the_terms() и выполнив array_search() для результата.

function has_custom_taxonomy_term($termSlug, $taxonomy, $postId = null) {
    $terms = get_the_terms($postId, $taxonomy);
    if (isset($terms->errors)) {
        // taxonomy doesn't exist
        return false;
    }

    return array_search($termSlug, array_column($terms, 'slug')) !== false;
}


if (has_custom_taxonomy_term('skaga', 'hoteller')) {
    get_template_part( 'includes/partials/header/header-menu-skaga' );
}
...