一种方法是创建一个重写规则,该规则将捕获这3个变量,并将它们作为参数提供给作业模板。假设模板slug为;作业(&Q):
function jobquery_rewrite_rule() {
add_rewrite_rule(
\'^job/([^/]*)/([^/]*)/([^/]*)/?\',
\'index.php?pagename=job&state=$matches[1]&city=$matches[2]&job=$matches[3]\',
\'top\'
);
}
add_action( \'init\', \'jobquery_rewrite_rule\' );
将此操作插入主题后,必须通过访问设置刷新永久链接规则缓存>;永久链接以使此新重写规则生效。
这将创建3个新的GET参数,您现在可以在作业模板中访问这些参数,但首先需要允许使用query\\u vars\\u filter访问这些参数,以从每个参数创建安全变量:
add_filter( \'query_vars\', \'add_query_vars_filter\' );
function add_query_vars_filter( $vars ) {
$vars[] = \'state\';
$vars[] = \'city\';
$vars[] = \'job\';
return $vars;
}
如果没有完整的自定义帖子结构或元字段,我很难写出查询内容,但在您的作业模板中,您应该能够将这些GET vars捕获到vars中,您需要构建一个“反向”wp\\u查询来获取该作业的帖子内容:
$state_var = get_query_var(\'state\');
$city_var = get_query_var(\'city\');
$job_var = get_query_var(\'job\');
//Use something like this to find the job based off the passed params
$args = array(
\'post_type\' => \'job\',
\'meta_query\' => array(
array(
\'key\' => \'job_state\',
\'value\' => $state_var,
),
array(
\'key\' => \'job_city\',
\'value\' => $city_var,
),
array(
\'key\' => \'job_title\',
\'value\' => $job_var,
),
),
);
$query = new WP_Query( $args );