WordPress тот же шаблон архива для пользовательских типов записей и таксономии

Я создал собственную таксономию для тегов

function create_topics_nonhierarchical_taxonomy() {

// Labels part for the GUI

$labels = array(
'name' => _x( 'Topics', 'taxonomy general name' ),
'singular_name' => _x( 'Topic', 'taxonomy singular name' ),
'search_items' =>  __( 'Search Topics' ),
'popular_items' => __( 'Popular Topics' ),
'all_items' => __( 'All Topics' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Edit Topic' ),
'update_item' => __( 'Update Topic' ),
'add_new_item' => __( 'Add New Topic' ),
'new_item_name' => __( 'New Topic Name' ),
'separate_items_with_commas' => __( 'Separate topics with commas' ),
'add_or_remove_items' => __( 'Add or remove topics' ),
'choose_from_most_used' => __( 'Choose from the most used topics' ),
'menu_name' => __( 'Topics' )
);

// Now register the non-hierarchical taxonomy like tag

register_taxonomy('topics','post',array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'show_in_nav_menus' => true,
'rewrite' => array( 'slug' => 'topic' ),
));
}

и подключил его к моему типу поста

register_post_type( 'video', array(
...
'taxonomies' => array( 'topics' ),
...
) );

Пользовательский тип сообщения использует archive-video.php как шаблон архива. Можно ли использовать тот же шаблон архива для пользовательской таксономии? Не дублируя файл и не переименовывая его.

1

Решение

Вы можете использовать template_include фильтр, чтобы установить шаблон, который вам нужен для конкретного условия

Вы можете попробовать что-то вроде этого

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

if ( is_tax( 'topics' ) ) {
$new_template = locate_template( array( 'archive-video.php' ) );
if ( '' != $new_template ) {
return $new_template ;
}
}
return $template;

}, PHP_INT_MAX, 2 );
3

Другие решения

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

Создайте taxonomy-topics.php и добавьте следующий код:

<?php

// Find and load the archive template.
locate_template( 'archive-video.php', true );
4

По вопросам рекламы [email protected]