将自定义URL与自定义重写规则一起使用时,Query_vars为空

时间:2016-01-25 作者:KArneaud

我正在尝试使用

add_rewrite_tag(\'%product%\', \'([0-9/]+)\');
add_rewrite_rule(\'^sign-up/product/([0-9/]+)?$\',\'index.php?pagename=sign-up&product=$matches[2]\',\'top\');
当我可以去/sign-up/product/60/ 成功地

这个$wp_query->query_var[\'product\'] 变量似乎为空

我不确定我做错了什么。。。还有什么我需要再做的吗?我已经把规则刷新了好几次,只是为了确定,但没有骰子。

1 个回复
SO网友:Milo

您只有一个捕获组,ID位于matches[1], 没有matches[2].

编辑-

这是我在2016年主题中测试的工作版本。我用slug创建了一个页面sign-up, 将以下内容添加到functions.php, 然后访问Permalinks设置页面刷新重写规则。传递给的值product 可通过以下方式在模板中获得get_query_var( \'product\' );

function wpd_product_rewrite() {
    add_rewrite_tag( \'%product%\', \'([0-9/]+)\' );
    add_rewrite_rule(
        \'^sign-up/product/([0-9/]+)?$\',
        \'index.php?pagename=sign-up&product=$matches[1]\',
        \'top\'
    );
}
add_action( \'init\', \'wpd_product_rewrite\' );