Wordpress 多个 add_query_vars 返回 404

问题描述

我使用的是最新版本的 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()。