最后更新时间为 2018年5月27日
导语:叶子在为一位客户做开发的时候,需要用到WordPress的标签多重过滤功能,还要将动态地址重写为伪静态的地址,下面来看实现方法。
WordPress的多重筛选
WordPress提供原生态的多重筛选功能,实现方法如下面的链接。
使用标签和分类的名称作为筛选条件
http://domain.com/?tag=shanghai,xian&category_name=accommodation,china-classic-tours
使用标签和分类的ID作为筛选条件
http://domain.com/?tag_id=4,6&cat=8,9
并集结果的筛选形式
以上的链接是进行了OR的操作,如果需要结果同时匹配多个条件进行AND的操作,请看下面的链接。
http://domain.com/?tag_id=4+6&cat=8+9
以上是叶子的一点心得,其他的请自行摸索。
重写路径
叶子需要将地址重写,原地址如下:
http://domain.com/?tag=shanghai,xian&category_name=accommodation
重写后的地址如下:
http://domain.com/destination/shanghai,xian/accommodation
实现代码:
利用add_rewrite_rule函数来添加地址规则,添加完成后,需要刷新规则。
function wpdocs_flush_rules() { $rules = get_option( 'rewrite_rules' ); if ( ! isset( $rules['destination/([0-9a-zA-Z\-_,]+)/([0-9a-zA-Z\-_,]+)?$'] ) ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } if ( ! isset( $rules['destination/([0-9a-zA-Z\-_,]+)/([0-9a-zA-Z\-_,]+)/page/?([0-9]{1,})/?$'] ) ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } } add_action( 'wp_loaded','wpdocs_flush_rules' ); function yct_add_rewrite_rules() { add_rewrite_rule('destination/([0-9a-zA-Z\-_,]+)/([0-9a-zA-Z\-_,]+)/page/?([0-9]{1,})/?$', 'index.php?tag=$matches[1]&category_name=$matches[2]&paged=$matches[3]', 'top'); add_rewrite_rule('destination/([0-9a-zA-Z\-_,]+)/([0-9a-zA-Z\-_,]+)?$', 'index.php?tag=$matches[1]&category_name=$matches[2]', 'top'); } add_filter('init', 'yct_add_rewrite_rules');