Wordpress URL使用自定义$_GET变量重写


Wordpress URL rewrite with custom $_GET variable

我正在寻找一种重写类似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事件表中查找event_id来获得名称,但我不确定将查询放在哪里,这样我就可以将其交换到url中。希望我没有把事情弄糊涂

你做错了。

WordPress中的URL可以在您的仪表板中轻松自定义。请参阅WordPress Codex中的使用固定链接文章。

我不是一个真正的重写专家,但如果你只使用一个$_GET变量,这个片段会对你有用(至少对我有用)。正如您所看到的,重写sintax在引用$_GET参数的方式上有点不同。

您的代码也适用于多个$_GET-var上下文,而不是单个上下文。希望这对你有用,记住更新你的永久链接到设置→永久链接屏幕→保存更改。

更多信息:Wordpress重写API|Wordpress固定链接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;
    }