首页 > 解决方案 > WP rewrite_rule 匹配为空(使用排除模式)

问题描述

我正在努力使用 WP add_rewrite_rule 并喜欢任何反馈和帮助。

我的类别页面是:

我的产品页面是:

由于默认的 WP 重写规则与对类别和产品使用相同的 pemalink 基础存在冲突,因此我试图解决这个问题。

我能够删除所有产品类别规则并希望添加一个新规则,其中 URI 以“类别”开头但其中没有“产品”字符串。我认为我得到了正确的重写规则并且它捕获了它,但是$matches[1]始终为空并且不转发实际的类别名称。

add_action('init', function(){
    add_filter('product_cat_rewrite_rules', '__return_empty_array');
    
    add_rewrite_rule('category\/(?!product).*\/?$', 'index.php?tester=$matches[1]', 'top');
    

    
}, 10, 0);


function custom_rewrite_tag( $vars ) {
add_rewrite_tag( '%tester%', '([^&]+)');
}
add_action( 'init', 'custom_rewrite_tag');

当我打印出该页面的 query_vars 时,我总是得到: Array ( [tester] => )

标签: phpregexwordpresswp-rewrite

解决方案


推荐阅读