add_rewrite_url get参数为空

时间:2016-03-17 09:04:44

标签: php wordpress url-rewriting get

我使用add_rewrite_rule将一个漂亮的URL重定向到右侧页面。 这是规则:

add_rewrite_rule('^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/?','index.php?pagename=auto&id=1234', 'top' );

所以,如果我转到以下网址:website.com/cars/brand/model/car/1234它将转到pagename auto的页面。

在此页面上是一个需要获取此ID的短代码。如果我回显$ _GET ['pagename'],则打印'auto'。但是如果我打印$ _GET ['id']它什么都没有。为什么我不能在短代码中获得该值?

此规则正常:

add_rewrite_rule('^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/?','index.php?pagename=auto&id=' . $_GET['id'], 'top' );

但我想要这样的事情:

add_rewrite_rule('^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/?','index.php?pagename=auto&id=$matches[5]', 'top' );

我不知道为什么$ matches是空的。

完整代码:

function redirectUrls() {
    flush_rewrite_rules();
    add_rewrite_rule('^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/?','index.php?pagename=auto&id=1234', 'top' );
}
add_action('init', 'redirectUrls');

我把这段代码放在我的插件中

编辑(答案) 我已经使用过这个教程,它可以工作:http://www.janes.co.za/wordpress-permalinks-and-custom-_get-variables/

我也使用了@Sacroma的答案

function add_query_vars($aVars) {
    $aVars[] = "id";    // represents the name of the product category as shown in the URL
    return $aVars;
}
add_filter('query_vars', 'add_query_vars');

function add_rewrite_rules($aRules) {
    $aNewRules = array('^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/?$' => 'index.php?pagename=auto&id=$matches[5]');
    $aRules = $aNewRules + $aRules;
    return $aRules;
}

add_filter('rewrite_rules_array', 'add_rewrite_rules');

现在我可以使用get_query_var(“id”)

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找get_query_var("id")它从一个漂亮的网址中检索GET参数。

有关详细信息,请参阅codex。

https://codex.wordpress.org/Function_Reference/get_query_var