我使用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”)
答案 0 :(得分:2)
我认为您正在寻找get_query_var("id")
它从一个漂亮的网址中检索GET参数。
有关详细信息,请参阅codex。
https://codex.wordpress.org/Function_Reference/get_query_var