您可以通过重写端点和pre_get_posts
行动
首先,您的分类法必须注册到一些特定的rewrite
支持这一点的参数,尤其是,ep_mask
:
register_taxonomy(
\'customtax\',
\'posttype\',
array(
\'rewrite\' => array(
\'slug\' => \'custom-tax\',
\'hierarchical\' => true,
\'ep_mask\' => EP_ALL
),
// other args...
)
);
然后,您可以为过滤器添加端点,也可以在
init
措施:
add_rewrite_endpoint( \'low-price\', EP_ALL );
请注意,此时需要刷新重写规则才能存在新端点。
最后一步是挂钩pre_get_posts
并检测low-price
端点,并将适当的元参数应用于查询:
function wpd_filter_my_tax( $query ) {
if ( $query->is_tax( \'customtax\' )
&& $query->is_main_query()
&& isset( $query->query_vars[\'low-price\'] ) ) {
$query->set( \'meta_key\', \'price\' );
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'order\', \'ASC\' );
}
}
add_action( \'pre_get_posts\', \'wpd_filter_my_tax\' );