Как назвать шаблон WordPress для категории И пользовательской таксономии - PullRequest
0 голосов
/ 25 марта 2019

Я использую категории для видов для сайта фотографирования природы и пользовательскую таксономию, называемую местоположение, чтобы захватить, где были сделаны фотографии.

Я бы хотел загрузить другой шаблон, когда категория «флора», а местоположение «Южная Америка», поэтому я назвал свой шаблон category-flora-taxonomy-location-south-africa.php.

Если я зайду на http://mywebsite/species/flora/location/south-africa/, будет загружен правильный пост, но не мой шаблон. Я переписал правила перезаписи, сохранив постоянные ссылки. Я также попробовал следующие имена файлов для моего шаблона, тот же результат:

category-flora-taxonomy-location-south-africa.php
category-flora-taxonomy_location-south-africa.php
taxonomy-location-south-africa-category-flora.php
taxonomy-location-south-africa_category-flora.php

Поддерживает ли WordPress смешение категорий и пользовательских таксономий в именах шаблонов, как это, или я должен явно загружать свой шаблон? Если это так, то какой метод сделать это?

Ответы [ 2 ]

2 голосов
/ 25 марта 2019

Это правило не является частью WP, но мы можем его построить ...

В functions.php добавьте и настройте это:

add_filter( 'taxonomy_template', function ( $template )
{

    // get category and term slugs from post object via get_queried_object()

    $custom_template = 'category-{$category}-taxonomy-{$taxonomy}-{$term}.php';
    $locate_template = locate_template( $custom_template );

    if ( !$locate_template )
        return $template;

    return $template = $locate_template;
}
0 голосов
/ 25 марта 2019

Для страниц архива get_queried_object () получает только категорию, но не пользовательскую таксономию, которую я также должен проверить. Поэтому я использую глобальные переменные $ category_name и $ location. Вот модифицированный код:

add_filter('taxonomy_template', function( $template ){
    global $category_name, $location;
    if ( ($category_name == "flora") && $location == "south-africa" ) {
        $custom_template = 'category-flora-taxonomy-location-south-africa.php';
        $locate_template = locate_template( $custom_template );
    };
    if ( !$locate_template )
        return $template;

    return $template = $locate_template;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...