wordpress add_rewrite_rule不重写

时间:2016-01-04 22:32:56

标签: php wordpress

我已将此代码添加到我的主题functions.php文件

function custom_rewrite_rule() {
    add_rewrite_rule('^shop/([^/]*)/?','index.php?page_id=1247&page=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule', 'top');

所以当我浏览domain.com/shop/page1时,它应该重写为index.php?page_id=1247&page=page1,但当我在page_id=1247上执行以下操作时,我会得到这些结果

echo $_GET["page"]; // = nothing
print_r($_GET) // = `Array( )`

2 个答案:

答案 0 :(得分:1)

您应该使用--std=gnu++11

获取参数

这是一个例子

$wp_query->query_vars

<强>更新

您需要使用global $wp_query; echo $wp_query->query_vars['id'];

add_rewrite_tag

同时wordpress在查询中使用add_rewrite_tag('%id%', '([^&]+)'); ,因此请使用其他名称

答案 1 :(得分:0)

您是否刷新并重新生成数据库中的重写规则?正如the docs所述:

  

重要事项:修改规则后,不要忘记刷新并重新生成重写规则数据库。从WordPress管理屏幕,选择设置 - &gt;永久链接,只需点击保存更改,无需任何更改。

每当您添加新的重写规则时,您需要单击Permalinks管理页面中的“保存更改”(即使您没有更改此页面中的任何内容),以确保Wordpress更新数据库中的规则。