个性化阅读
专注于IT技术分析

WordPress的重写规则来创建漂亮的URL

我在主题文件夹中的page-templates / event-page.php中创建了一个页面模板, 该页面模板能够读取eventpath URL参数, 并使用它执行一些Ajax查询。

我将页面事件创建为其他页面的子页面, 并为其分配了页面模板。当我使用这样的URL时, 所有的工作都按预期进行:

/learn-network/events/event/?eventpath=MyEventSlug

我想要更漂亮的网址格式, 例如

/learn-network/events/MyEventSlug

我将以下代码添加到我的functions.php中, 但我不断收到404错误页面:

function events_flush_rules(){
    $rules = get_option('rewrite_rules');
    if(!isset($rules['^learn-network/events/([^/]+)/?$'])){
      global $wp_rewrite;
      $wp_rewrite -> flush_rules();
    }
}
add_action('wp_loaded', 'events_flush_rules');

function events_rewrite_rule() {
    add_rewrite_rule( '^learn-network/events/([^/]+)/?$', 'index.php?pagename=learn-network%2Fevents%2Fevent&eventpath=$matches[1]', 'top');
}
add_action('init', 'events_rewrite_rule');

function events_register_query_var($vars) {
    $vars[] = 'eventpath';
    return $vars;
}
add_filter('query_vars', 'events_register_query_var');

我也尝试添加以下代码, 但是目前我认为它没有任何作用:

function events_url_rewrite_templates() {
    if(get_query_var('eventpath') && is_singular()){
        add_filter( 'template_include', function() {
            return get_template_directory() . '/page-templates/event-page.php';
        });
    }
}
add_action('template_redirect', 'events_url_rewrite_templates');

我已经尝试了好几天才能使它成功运行。

有人可以帮忙吗?

更新

将永久链接保存在仪表板上的建议对我有用。谢谢!

最后, 唯一需要的代码是

function events_rewrite_rule() {
    add_rewrite_rule( '^learn-network/events/([^/]+)/?$', 'index.php?pagename=learn-network%2Fevents%2Fevent&eventpath=$matches[1]', 'top');
}
add_action('init', 'events_rewrite_rule');

function events_register_query_var($vars) {
    $vars[] = 'eventpath';
    return $vars;
}
add_filter('query_vars', 'events_register_query_var');

#1


修改规则后, 尝试刷新并重新生成重写规则数据库。在WordPress管理屏幕上, 选择设置->永久链接, 然后单击保存更改而不进行任何更改。如这里提到的。

赞(0)
未经允许不得转载:srcmini » WordPress的重写规则来创建漂亮的URL

评论 抢沙发

评论前必须登录!