0

我正在寻找一种方法来重写类似于 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 rewrite 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。希望我没有混淆事情。:)

4

2 回答 2

0

你这样做是错的。

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

于 2012-07-26T06:32:49.077 回答
0

我不是真正的重写专家,但如果你只使用一个 $_GET var,这个片段对你有用(至少它对我有用)。如您所见,重写 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;
    }
于 2018-01-02T11:53:30.093 回答