我应该编写什么URL重写规则来检索URL中的变量?

时间:2016-12-20 作者:Fafanellu

我有一个自定义页面模板,其行为类似于存档:其URL为www.mysite.com/test/. “漂亮链接”已启用。我需要添加一个数字,例如www.mysite.com/test/1234.

目的是检索此编号并为相应的存档提供服务。

我一直在使用一个名为num, 声明如下:functions.php :

add_filter(\'query_vars\', \'my_register_qv\' );
function my_register_qv( $qvars ){
    //Add query variable to $qvars array
    $qvars[] = \'num\';
    return $qvars;
}
仍在functions.php, 以下是我写的规则:

 function add_rewrite_rules($aRules) {
    $aNewRules = array(\'test/^[0-9]*$\' => \'index.php?pagename=test&num=$matches[1]\');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}
add_filter(\'rewrite_rules_array\', \'add_rewrite_rules\');
最后,在模板的代码中,我是如何检索变量的:

//$maxnum is the default value
$num = get_query_var(\'num\', $maxnum);
但当我调用这样的URL时:www.mysite.com/test/1234, “1234”值不是由get_query_var() 作用相反,我被赋予了默认值。

我做错了什么?

谢谢你的帮助

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

问题出在重写规则函数中,应该是

function num_rewrite_rule(){
    add_rewrite_rule(
        \'test/([0-9]+)/?$\',
        \'index.php?pagename=test&num=$matches[1]\',
        \'top\'
    );
}
add_action( \'init\', \'num_rewrite_rule\' );

Reference

add_rewrite_rule

NOTE: 始终记住通过访问**设置-永久链接刷新永久链接**

相关推荐