WordPress add_rewrite_rule()无法访问较低的url级别

时间:2016-04-21 作者:Robbert

我有一个名为“shop”的帖子类型,添加了查询变量和重写规则。

// Adds query vars for shop post type
function gtp_add_shop_query_vars( $vars ) {

    $vars[] = \'shop-category\';
    $vars[] = \'width\';
    $vars[] = \'height\';
    return $vars;       
}
add_filter( \'query_vars\', \'gtp_add_shop_query_vars\' );

// Adds rewrite rules for shop post type
function gtp_add_shop_rewrite_rules() {
    add_rewrite_rule( \'^shop/([^/]*)/([^/]*)/([^/]*)$\', \'index.php?shop-category=$matches[1]&width=$matches[2]&height=$matches[3]\', \'top\' );
}
add_action(\'init\', \'gtp_add_shop_rewrite_rules\', 10, 0);
有了这些规则,我现在可以访问:

https://www.example.com/shop/product/80cm/100cm/

但如果我想参观:

正则表达式不再匹配,将找不到该页面。

我需要做什么才能输入url的所有级别?

1 个回复
最合适的回答,由SO网友:Robbert 整理而成

我修复了以下问题:

// Adds rewrite rules for shop post type
function gtp_add_shop_rewrite_rules() {
    add_rewrite_rule( \'^shop/([^/]*)/([^/]*)/([^/]*)$\', \'index.php?shop-category=$matches[1]&width=$matches[2]&height=$matches[3]\', \'top\' );
    add_rewrite_rule( \'^shop/([^/]*)/([^/]*)$\', \'index.php?shop-category=$matches[1]&width=$matches[2]\', \'top\' );
    add_rewrite_rule( \'^shop/([^/]*)$\', \'index.php?shop-category=$matches[1]\', \'top\' );
}
add_action(\'init\', \'gtp_add_shop_rewrite_rules\', 10, 0);

相关推荐

Permalinks setting

所以,我知道这是一个基本的问题,但奇怪的是,它对我不起作用。我想要的:https://example.com/blog/thema/类别名称/postname(用于帖子)https://example.com/blog/thema/类别名称(适用于类别)以下是我的设置:遗憾的是,这行不通。以下是有关在什么设置下工作的详细信息:Posts: /blog/thema/%category%/%postname%/ + Category: blog/thema = 分类工作,帖子获取404Posts: /%cat