我在主题文件夹中的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管理屏幕上, 选择设置->永久链接, 然后单击保存更改而不进行任何更改。如这里提到的。
评论前必须登录!
注册