2012-07-26 99 views
0

我正在寻找一种方式来重写类似的WordPress的URL其中:WordPress的URL重写

http://www.example.com/?p=5 

成为

http://www.example.com/some-page-with-that-title 

我想

http://www.example.com/events/?event_id=23 

成为

http://www.example.com/events/some-event-title 

我发现了wordpress重写api,并成功地获取了以下内容以使用和事件模板页面重写url。

add_action('init', 'events_permalinks'); 
function events_permalinks() { 
    add_rewrite_rule(
     'events/([^/]+)/?', 
     'index.php?pagename=events&event_name=$matches[1]', 
     'top' 
); 
} 

add_filter('query_vars', 'events_query_vars'); 
function events_query_vars($query_vars) { 
    $query_vars[] = 'event_name'; 
    return $query_vars; 
} 

,并得到变量, get_query_var(“EVENT_NAME”)

我知道我需要查找的事项标识在非WordPress的事件表,以获得名字,但我不知道在哪里把查询,所以我可以交换到URL。希望我没有混淆的东西。 :)

回答

0

你做错了。

WordPress中的网址可以在您的仪表板中轻松自定义。请参阅WordPress Codex的Using Permalinks文章。

+0

我看过那篇文章。它并不真正适用于我的问题自定义$ _GET变量只是像%post_id%等wordpress变量 – user1357684 2012-07-26 18:33:19

0

我不是一个真正的重写专家,但如果你只使用一个$ _GET var这段代码将为你工作(至少它对我有效)。正如你所看到的,重写sintax在你引用$ _GET参数的方式上有点不同。

您的代码也适用于多个$ _GET var上下文,而不是一个。希望为你工作,rembember更新你的永久链接去设置→永久屏幕→保存更改。

更多信息:Wordpress Rewrite API | Wordpress Permalinks Codex

add_action('init', 'events_permalinks'); 

    function events_permalinks(){ 
    add_rewrite_rule(
      '^events/([^/]*)$', 
      'index.php?pagename=events&event_name=$matches[1]', 
      'top' 
      ); 
    } 

    add_filter('query_vars', 'events_query_vars'); 
    function events_query_vars($query_vars) { 
     $query_vars[] = 'event_name'; 
     return $query_vars; 
    }