此方法将对其进行设置,以便如果在分类法归档的末尾添加/全部,它将显示所有帖子。
首先,在注册分类法时,请确保将ep_mask
到EP_CATEGORIES
. 这意味着我们可以向其添加自定义端点。
function wpse_277843_register_taxonomy() {
register_taxonomy( \'game_go_series\', \'game_go\', array(
\'rewrite\' => array(
\'slug\' => \'series\',
\'ep_mask\' => EP_CATEGORIES,
),
) );
}
add_action( \'init\', \'wpse_277843_register_taxonomy\' );
不要复制所有代码,只需确保
ep_mask
因为它可能还没有这样设置。
添加ep_mask
要自定义Post类型UI生成的分类,请执行以下操作:
function wpse_277843_cptui_ep_mask( $args, $taxonomy_slug, $taxonomy_args ) {
if ( \'game_go_series\' == $taxonomy_slug ) {
$args[\'rewrite\'][\'ep_mask\'] = EP_CATEGORIES;
}
return $args;
}
add_filter( \'cptui_pre_register_taxonomy\', \'wpse_277843_cptui_ep_mask\', 10, 3 );
然后创建
all
将端点重写到
EP_CATEGORIES
面具
function wpse_277843_all_endpoint() {
add_rewrite_endpoint( \'all\', EP_CATEGORIES );
}
add_action( \'init\', \'wpse_277843_all_endpoint\' );
这确实意味着端点对类别也有效,但我们可以在以后的任何自定义行为中忽略它们。不幸的是,目前仅向自定义分类法添加端点似乎是不可能的。这只是意味着
/category/category-name/all
不会扔404的。这个
/all
将被忽略(或者,如果需要,可以对类别应用相同的行为)。
然后,在pre_get_posts
, 如果all
在自定义分类法上访问端点,设置posts_per_page
到-1
:
function wpse_277843_all_posts( $query ) {
if ( $query->is_main_query() && $query->is_tax( \'game_go_series\' ) ) {
if ( isset( $query->query_vars[\'all\'] ) ) {
$query->set( \'posts_per_page\', -1 );
}
}
}
add_action( \'pre_get_posts\', \'wpse_277843_all_posts\' );
然后,如果您已经在分类法存档中,并且还不是/所有版本,则可以将模板的链接添加到/所有版本:
<?php if ( is_tax( \'game_go_series\' ) && get_query_var( \'all\', false ) === false ) : ?>
<a href="<?php echo get_term_link( get_queried_object() ); ?>all/">
Show All
</a>
<?php endif; ?>