使用wordpress重写的路由错误

时间:2018-06-29 10:02:36

标签: wordpress url-rewriting url-routing

我有一个页面设置,其永久链接为mydomain.com/events,该页面使用页面模板。此页面显示了我从外部来源提取的所有事件(因此不能是自定义帖子类型)。然后,我进行了设置重写,以处理url的categorys参数,然后处理单个事件。

add_action('init', 'mydomain_events_rewrite');
function mydomain_events_rewrite()
{
    add_rewrite_rule(
        '^events/categories/?$',
        'index.php?category=$matches[1]',
        'top'
    );

    add_rewrite_rule(
        '^events/?$',
        'index.php?event=$matches[1]',
        'top'
    );
}

add_filter('query_vars', 'mydomain_events_rewrite_var');
function mydomain_events_rewrite_var($vars)
{
    $vars[] = 'events';
    $vars[] = 'categories';
    return $vars;
} 

因此,想法是类别将仅向事件页面提供类别变量,例如mydomain.com/events/categories/film。然后各个事件将是mydomain.com/events/123/my-epic-film

按现状,如果我转到mydomain.com/events,它将直接将我重定向到首页。但是,如果我使用重写URL,则mydomain.com/events/categories/film会进入404。我在这里哪里出错了?

谢谢!

1 个答案:

答案 0 :(得分:1)

所以我缺少正确的正则表达式和页面

add_rewrite_rule(
    '^events/category/([^/]*)/?',
    'index.php?pagename=events&category=$matches[1]',
    'top'
);

add_rewrite_rule(
    '^events/([^/]*)?',
    'index.php?pagename=events&event=$matches[1]',
    'top'
);