问题描述
我使用的是最新版本的 wordpress 5.8。现在我正在尝试创建一个像 https://example.com/jobs/1234/accountant 这样漂亮的 URL。 jobid 和 jobtitle 中的值是动态的。
这是我的函数;
add_action('init',function() {
add_rewrite_rule( 'jobs/([a-z0-9-]+)[/]?$','index.PHP?pagename=jobs&jobid=$matches[1]&jobtitle=$matches[2]','top' );
} );
add_filter('query_vars',function($vars) {
$vars[] = "jobid";
$vars[] = "jobtitle";
return $vars;
});
以上代码仅适用于https://example.com/jobs/1234/
如果我在 jobid (1234) 旁边添加另一个值,例如 (accountant),它会返回到 404 page not found。
有没有办法让它工作?我不希望网址像 https://example.com/jobs/1234/?jobtitle=accountant
解决方法
我最终更改了正则表达式,但现在没有得到 404。
add_rewrite_rule( '^jobs/([^/]*)/?','index.php?pagename=jobs&jobid=$matches[1]&jobtitle=$matches[2]','top' );
为了获得第二个值,我提取了 url $wp->request()。