需要有关重写规则数组的帮助

时间:2011-02-07 作者:user1462

我有一个在/类别/任务处访问的页面,该文件位于wp内容/主题/我的主题/任务处。php。我想这样做,以便我可以在任务后添加一个标志,并在任务中选择强查询。php。当我使用/类别/任务/?何时=即将到来。

有人能告诉我如何使用rewrite\\u rules\\u array,以便它使用URL结构/类别/任务/即将到来的URL通过查询字符串发送变量吗?

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

Try this:

function when_rewrite_rules( $wp_rewrite ) {
  $new_rules = array();
  $new_rules[\'category/tasks/(\\d*)$\'] = \'index.php?when=$matches[1]\';
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_filter(\'generate_rewrite_rules\',\'when_rewrite_rules\');
SO网友:Jan Fabry

这并不难。您添加了一个新的重写规则,该规则接受您的URL格式并设置正确的查询变量(您可以选择您想要的任何名称,只要它是唯一的)。有很多方法可以添加重写规则,我更喜欢add_rewrite_rule(). 确保在执行此操作后刷新规则一次(从代码中,或通过访问Permalinks页面)。

add_action( \'init\', \'wpse8764_init\' );
function wpse8764_init()
{
    add_rewrite_rule( \'category/tasks/upcoming/?$\', \'index.php?pagename=category/tasks&wpse8764_var=upcoming\', \'top\' );
}
此查询变量将不会传递给$wp_query 除非将其添加到公共查询变量中。之后,您可以使用get_query_var( \'wpse8764_var\' ).

add_filter( \'query_vars\', \'wpse8764_query_vars\' );
function wpse8764_query_vars( $query_vars )
{
    $query_vars[] = \'wpse8764_var\';
    return $query_vars;
}

SO网友:Denis de Bernardy

有一个permalink端点特性,但如果没有尾部参数,它会非常脆弱。

首先,有一个问题,这个问题只在他们修改了文件后才得到解决:

http://core.trac.wordpress.org/ticket/9476

但最重要的是,重写引擎在某一点上使用empty(),将端点检测为空,并将其标记为set。有三种变通方法。

一个是你目前正在做的,也就是传递一个GET参数。

另一种方法是挂接init,然后在检测到端点时调整全局并相应地更改REQUEST\\u URI。

最后是实际使用参数,即不:

/类别/任务/即将推出

而是:

/类别/任务/筛选/即将发布

结束

相关推荐