代码之家  ›  专栏  ›  技术社区  ›  Jam3sn

wordpress rewrite的错误路由

  •  1
  • Jam3sn  · 技术社区  · 6 年前

    我有一个永久链接的页面设置 mydomain.com/events 它使用页面模板。此页显示从外部源拉入的所有事件(因此不能是自定义日志类型)。然后,我设置重写以处理URL的categories参数,然后处理单个事件。

    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/事件 它只是把我重定向到主页。但是如果我使用重写URL, mydomain.com/events/categories/film/电影 结果是404。我在这里哪里出错?

    谢谢!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Jam3sn    6 年前

    所以我错过了正确的regex和页面

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