Я создал собственную таксономию для тегов
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
как шаблон архива. Можно ли использовать тот же шаблон архива для пользовательской таксономии? Не дублируя файл и не переименовывая его.
Вы можете использовать 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 );
Я бы создал файл таксономии и загрузил архивный файл. Это позволяет избежать двух копий одного и того же файла, которые необходимо синхронизировать. WooCommerce использует тот же подход для категорий товаров и тегов.
Создайте taxonomy-topics.php
и добавьте следующий код:
<?php
// Find and load the archive template.
locate_template( 'archive-video.php', true );