портфолио, отзывы, услуги - по правильному надо делать через разные типы таксономий, однако если информация уже забита, то можно и через одну.
В данном случае Иерархия шаблонов под ваши цели штука хорошая однако не универсальная, есть вариант сильно лучшее.
есть экшены
// Сохранение данных при редактировании термина таксономии
add_action( 'edited_{taxonomy}', 'my_save_function' );
// Сохранение данных при создании термина таксономии
add_action( 'create_{taxonomy}', 'my_save_function');
// Добавление чего то к созданию термина таксономии
add_action( '{taxonomy}_add_form_fields', 'my_add_term_function');
// Добавление чего то к редактированию термина таксономии
add_action( '{taxonomy}_edit_form_fields', 'my_edit_term_function' );
Добавляете через
my_add_term_function my_edit_term_function любым доступным вам способом радиобаттон с названиями шаблонов.
Значения сохраняете в опцию, в общем виде функция сохранения будет выглядеть так.
/**
* Сохраняет метаданные термина в опцию
* @param $term_id - объект категории
*/
function my_save_function( $term_id ) {
$term_meta = array();
if ( isset( $_POST['my_options_array_name'] ) ) {
foreach ( $_POST['my_options_array_name'] as $key => $val )
{
$term_meta[$key] = $val;
}
update_option( '_my_options_term_'.$term_id, $term_meta );
}
}
Cами шаблоны складываете в отдельную папку, например -
tax-templates
и обзываете их t
emplate-{name}
Код шаблона категории в общем виде будет выглядеть так
<?php get_header();
$my_template = ! empty( get_option( '_my_options_term_' . get_queried_object()->term_id )) ? get_option( '_my_options_term_' . get_queried_object()->term_id ) : '';
?>
<div class="wraper">
<?php get_template_part('tax-templates/template',$my_template); ?>
</div>
<?php get_footer(); ?>
На выходе, любому термину можно назначить любой шаблон вывода прямо из админки, простая поддержка кода, можно добавит к каждому термину собственные данные, например баннер.