无法在wordpress上使用自定义var重写URL

时间:2015-03-20 13:27:08

标签: wordpress mod-rewrite rewrite

我在使用wordpress重写页面网址时遇到了一些问题。 我尝试使用常规apache mod_rewrite,但结果尚无定论。所以我选择专注于wordpress重写

我的开发域名是:

  

http://localhost/randomwebsite/

我试图重写此地址

  

/index.php?p=13806&annee=2014

作为

  

/ resultats / 2014 /

其中结果是p = 13806 而2014年则是“退休”。 (法语年份)

my functions.php:

function add_result_url() {
    add_rewrite_rule('^resultats/([0-9]+)/?', 'index.php?p=13806&annee=$matches[1]', 'top');
    add_rewrite_tag('%annee%','([0-9]+)');
};
add_action('init', 'add_result_url');
flush_rewrite_rules();

我的模板文件

global $wp_query;
$season = $wp_query->query_vars['annee'];
var_dump ($wp_query->query_vars['annee']);

var_dump在

上返回 null
  

/ resultats / 2014 /

但可以使用

  

resultats /?ANNEE = 2014

     

/index.php?p=13806&annee=2014(重定向第一个)

感谢您的帮助

编辑1

我查看来自ihor's answear的2个链接,但无法使用它:

  functions.php 
function add_custom_query_var( $vars ){
        $vars[] = "annee";
        return $vars;
    }
    add_filter( 'query_vars', 'add_custom_query_var' );
    function add_rewrite_rules($aRules) {
        //add_rewrite_rule('^resultats/([^/]*)/([^/]*)/$', '?p=13806&annee=$matches[1]&gp=$matches[2]', 'bottom');
        $aNewRules = array('^resultats/([0-9]*)/$' => 'index.php?p=13806&annee=$matches[1]');
        $aRules = $aNewRules + $aRules;
        return $aRules;
    }
    add_filter('rewrite_rules_array', 'add_rewrite_rules');

template file:
if(isset($wp_query->query_vars['annee'])) {
$season = urldecode($wp_query->query_vars['annee']);
}
var_dump ($season);
var_dump ($_GET["annee"]);

1 个答案:

答案 0 :(得分:0)

  1. 您无需添加rewrite_tag,因为您实际上是在$matches[1]中捕获此变量。
  2. 你确定WordPress知道这个名为annee的变量吗?也许你需要先注册这个var。
  3. 有关详细说明,请参阅这两个SO问题:

    How to pass extra variables in URL with Wordpress

    Passing and retrieving query vars in wordpress