我组织这件事的方式(我过去也这样做过)是为工作地点设置一个帖子类型,为地点设置一个层次分类法。
然后,您要做的是将州添加为位置分类法的顶层,然后将城市添加为州位置的子级。然后,可以将工作场地指定给城市和州。
通常,当您这样做时,如果您尝试查看一个州,而不是查看一个城市列表,您将看到该州的工作站点列表。这不是你想要的。因此,我们需要做的是修改位置的归档模板,以列出子类别,而不是工作站点。
因此,您需要创建taxonomy-location.php
查看州和城市时用作模板。通常,此模板中会包含以下内容:
<?php while ( have_posts() ) : the_post(); ?>
// Work Site template here.
<?php endwhile; ?>
这将列出该位置的工作地点。如果当前位置没有子类别,我们需要将此更改为仅列出工作地点,否则请列出子类别:
// Get subcategories of current location.
$current_location = get_queried_object();
$sub_locations = get_terms( [
\'taxonomy\' => $current_location->taxonomy,
\'parent\' => $current_location->term_id,
] );
// If there are subcategories for the current Location...
if ( ! empty( $sub_locations ) ) :
// ...loop through and display them.
foreach( $sub_locations as $location ) :
// Location template here.
echo $location->name; // Location name;
echo $location->description; // Location description.
echo get_term_link( $location ); // Location URL.
endforeach;
// Otherwise...
else :
// ...list Work Sites for the current location.
while ( have_posts() ) : the_post();
// Work Site template here.
endwhile;
endif;
此方法非常灵活,允许您拥有所需的任意级别的位置,并且只有最低级别的位置才会显示工作站点。