我们可以通过下面的方法给自定义文章类型添加标签,比如下面的代码,我就给「case(案例)」这个自定义文章类型添加了标签的功能,以便通过标签把案例和其他文章类型关联起来。
add_action('init', 'add_taxonomy_objects');
function add_taxonomy_objects() {
register_taxonomy_for_object_type('post_tag', 'case');
}
可是这样会出现一个问题,就是在默认的标签存档页面只会显示包含当前标签的文章,而不会显示包含当前标签的案例,这当然是有问题的。
还好我们有pre_get_posts
这个filter,我们可以通过这个 Filter 给标签存档页面的查询加上 case 这个自定义文章类型即可。
/**
* 在标签存档页面显示所有文章类型的文章
*/
function add_custom_types_to_tag_archives( $query ) {
if( is_tag() ) {
$post_types = array( 'post', 'case' );
$query->set( 'post_type', $post_types );
return $query;
}
}
add_filter( 'pre_get_posts', 'add_custom_types_to_tag_archives' );
把上面的代码加入到当前主题的 functhion.php 中,再打开标签存档页面,案例文章类型中的案例已经出现在标签存档中了。