ADD_REWRITE_RULE不生成$_GET中的任何内容

时间:2012-02-01 作者:Brent Christensen

试图为显示事件的插件获取永久链接

我有这个:

function my_add_rewrite_rules() {

  global $wpdb;
  $org_options = get_option(\'event_settings\');      
  // get id for events page     
  $event_page_id = $org_options[\'event_page_id\'];   

  $SQL = \'SELECT post_name  FROM wp_posts WHERE ID = %d\';
  $event_page = $wpdb->get_var( $wpdb->prepare( $SQL, $event_page_id ));

  add_rewrite_rule( $event_page . \'/([^/]+)?/$\', \'index.php?pagename=\' . $event_page . \'&event_slug=$matches[1]\', \'top\' );
  add_rewrite_rule( $event_page . \'/([^/]+)?$\', \'index.php?pagename=\' . $event_page . \'&event_slug=$matches[1]\', \'top\' ); 

}
add_action( \'init\', \'my_add_rewrite_rules\' );
还有这个:

function add_query_vars( $query_vars ) {
  $query_vars[] = \'event_slug\';
  return $query_vars;
}
add_filter( \'query_vars\', \'add_query_vars\' );   
更新“event\\u settings”(事件设置)选项时,将刷新管理中的重写规则。

我正在使用Jan Fabry开发的一个名为“Monkeyman重写分析器”的插件,它可以向您展示重写规则是如何处理的(看看吧,它很棒)。

这是上述结果:

Test URL
    http://localhost/events/some-event

Pattern
    events/([^/]+)?$    

Substitution 
    pagename: events
    event_slug: some-event
还显示为使用附加的尾部斜杠:

Test URL
    http://localhost/events/some-event/

Pattern
    events/([^/]+)?/$   

Substitution 
    pagename: events
    event_slug: some-event
这些结果似乎工作正常,但当我输入“http://localhost/events/some-event“在我的浏览器中,它不会像应该的那样重定向。

生成的$\\u GET和$\\u请求数组为空。

我做错了什么???

非常感谢您提供的任何帮助,但更感谢您提供正确的答案;)

谢谢

1 个回复
SO网友:Rob Vermeer

您可以使用该功能get_query_var().

像这样:

$event_slug = get_query_var(\'event_slug\');
更多信息in the Codex.

结束

相关推荐