Создайте отдельный шаблон для общей пользовательской таксономии с общими терминами
Я создал пользовательскую таксономию под названием "product_category", она была разделена с типом сообщений "книги" и "фильмы".
Поэтому мне нужно создать другой шаблон для обоих типов сообщений.
Дизайн обоих шаблонов будет отличаться, поэтому важно, чтобы обе общие таксономии post_type (даже их термины будут общими в обоих типах post_type.) должны иметь разные шаблоны.
Путь должен быть похож :-
Сайт/книги/категория товаров/ужасы/
Сайт/фильмы/категория товаров/ужасы/
1 answers
Видите ли, довольно сложно иметь такой путь, как
Сайт/книги/категория товаров/ужасы/
Сайт/фильмы/категория товаров/ужасы/
Поскольку функциональность wordpress будет конфликтовать между custom_post_type и их таксономией, если вы попытаетесь сохранить URL, как вы упомянули. Я предлагаю вам рассмотреть то, что я упомянул ниже, как решение вашей проблема.
Сайт/категория товаров/ужасы/?post_type=книги
Сайт/категория товаров/ужасы/?post_type=фильмы
Теперь, чтобы сохранить шаблон в соответствии с общими условиями, создайте два шаблона в каталоге тем.
- common-term-books.php
- common-term-movies.php
И используйте этот код для перенаправления на шаблон на основе пользовательского типа записи:
add_filter( 'template_include', 'wpse_152146_template_override', 99 );
function wpse_152146_template_override(){
if (is_tax()) {
if ( 'books' == $_GET['post_type']) {
$new_template = locate_template( array( 'common-term-books.php' ) );
if ( '' != $new_template ) {
return $new_template ;
}
}
elseif ( 'movies' == $_GET['post_type']) {
$new_template = locate_template( array( 'common-term-movies.php' ) );
if ( '' != $new_template ) {
return $new_template ;
}
}
else
return $template;
}
else
return $template;
}
Кроме того, вы также можете использовать созданную мной функцию custom_term_link для получения URL-адреса на основе post_type
function get_custom_term_link( $term, $taxonomy, $post_type ){
$link = get_term_link( $term, $taxonomy );
return $link.'?post_type='.$post_type;
}
get_custom_term_link( 'horror', 'product_category', 'books');
Не забудьте создать файл шаблона common-term-books.php & common-term-movies.php. В противном случае он просто покажет пустой белый экран.