我通过重写、添加query\\u var和在模板文件中进行一些条件检查,成功地实现了这一点。
我将在下面发布我使用的代码,但尽管这很有效,而且似乎工作得很好,但这并不是最好的方法。如果有人知道更好的方法,请张贴答案。
我用过这个online post 供参考。
Note: 列表页面在一侧下方的侧栏中显示分类法中的酒店列表,并在主内容区域中显示当前选定或随机选择的酒店。这将解释我如何使用下面的循环。
function prefix_locations_rewrite_rule() {
add_rewrite_rule( \'Locations/([^/]+)/([^/]+)\', \'index.php?locations=$matches[1]&hotel=$matches[2]\', \'top\' );
}
function prefix_register_query_var( $vars ) {
$vars[] = \'hotel\';
return $vars;
}
function prefix_url_rewrite_templates() {
if ( get_query_var( \'hotel\' ) && is_singular( \'hotel\' ) ) {
add_filter( \'template_include\', function() {
return get_template_directory() . \'/taxonomy-locations.php\';
});
}
}
add_action( \'template_redirect\', \'prefix_url_rewrite_templates\' );
add_filter( \'query_vars\', \'prefix_register_query_var\' );
add_action( \'init\', \'prefix_locations_rewrite_rule\' );
在酒店登录页的我的模板文件中:
$hotelSlug = get_query_var( \'hotel\', false);
if ( have_posts() ) {
while (have_posts()) : the_post();
if ($post->post_name == $hotelSlug) {
break;
}
endwhile;
}
这段代码将在帖子上迭代,如果hotel slug与查询var匹配,它将在那里中断,以便当前帖子就是我们想要的帖子。
我们可以在这里使用一个查询,但由于我在分类法中已经有了一个帖子列表,所以我想我应该对它进行迭代。下面我检查是否选择了特定的酒店,否则我会从列表中随机显示一家酒店。
我仍在为这段代码添加额外的逻辑和错误处理,我希望它能帮助有类似问题的人