У меня есть 3 пользовательских типа сообщений, каждый из которых имеет определенную таксономию определения ( abc _types).
Моя первая проблема заключается в том, что я ранее использовал страницу archive-abc.php дляотобразить страницу архива для разных типов постов, которые у меня есть, но, похоже, они перестали работать каждый раз, когда я использовал перезапись для своих постоянных ссылок (до того, как она использовалась как / публикации / TITLE-OF-POST, и теперь перезапись позволяет мне использоватьтакже пользовательская таксономия в URL-адресе, такая как / публикации / КНИГИ / TITLE-OF-POST).
Я могу создать шаблон страницы для отображения содержимого публикаций, но лучше использовать страницу архива из-за второй проблемы, с которой я сталкиваюсь ... Я скопировал код для одного из типов записей, таксономиии переписать ниже.
Вторая проблема, с которой я столкнулся, связана с пользовательской таксономией.Если я получаю доступ к пользовательской странице таксономии напрямую (/ публикации / книги), она использует archive.php для отображения контента, который очень похож на шаблон блога.Есть ли способ определить стандартную страницу отображения для пользовательской таксономии?Я пытался использовать таксономию-публикации.php, но это не работает.
Я бы хотел использовать архив-публикаций.php как для архива пользовательских типов записей, так и для таксономии.
Вот как создается тип моих сообщений в function.php
$labels = array(
"name" => __( "Publications"),
"singular_name" => __( "Publication"),
"featured_image" => __( "Publication Cover"),
"set_featured_image" => __( "Set Publication Cover"),
"remove_featured_image" => __( "Remove Publication Cover"),
"use_featured_image" => __( "Use Publication Cover"),
);
$args = array(
"label" => __( "Publications"),
"labels" => $labels,
"description" => "",
"public" => true,
"publicly_queryable" => true,
"show_ui" => true,
"show_in_rest" => false,
"rest_base" => "",
"has_archive" => true,
"show_in_menu" => true,
"show_in_nav_menus" => true,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => array( "slug" => "publications/%publications_types%", "with_front" => true ),
"query_var" => true,
"menu_icon" => "dashicons-book-alt",
"supports" => array( "title", "editor", "thumbnail" ),
"taxonomies" => array( "category", "post_tag" ),
);
register_post_type( "publications", $args );
Вот таксономия
$labels = array(
"name" => __( "Publication types" ),
"singular_name" => __( "Publication type" ),
);
$args = array(
"label" => __( "Publication types" ),
"labels" => $labels,
"public" => true,
"hierarchical" => true,
"label" => "Publication types",
"has_archive" => true,
"show_ui" => true,
"show_in_menu" => true,
"show_in_nav_menus" => true,
"query_var" => true,
"rewrite" => array( 'slug' => 'publications', 'with_front' => true, ),
"show_admin_column" => false,
"show_in_rest" => false,
"rest_base" => "publications_types",
"show_in_quick_edit" => false,
);
register_taxonomy( "publications_types", array( "publications" ), $args );
И URL переписывают для таксономии CPT (я получил код от https://wordpress.stackexchange.com/questions/5308/custom-post-types-taxonomies-and-permalinks)
function wpse_5308_post_type_link( $link, $post ) {
if ( $post->post_type === 'publications' ) {
if ( $terms = get_the_terms( $post->ID, 'publications_types' ) )
$link = str_replace( '%publications_types%', current( $terms )->slug, $link );
}
return $link;
}
add_filter( 'post_type_link', 'wpse_5308_post_type_link', 10, 2 );