wordpress重写的路由不正确

Incorrect routing with wordpress rewrite

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

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,它只会将我重定向到主页。但是,如果我使用重写 urls,mydomain.com/events/categories/film 它会转到 404。我哪里出错了?

谢谢!

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

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'
);