模板层次结构有问题。我需要创建一组从州向下钻取到特定位置的页面

时间:2018-12-18 作者:Tim King

我正在创建一组交互式页面,这些页面需要非常容易导航,因为观众年龄偏大。在流程中,用户将从一个页面开始,该页面列出了所有(美国)州。用户单击一个州,它会将他们带到一个州页面,并列出该州内拥有工作站点的所有城市。当用户单击一个城市时,它会将他们带到一个城市页面,并提供该城市内工作站点的列表。此工作流中的每个步骤都需要有相应的模板,以便显示不同的州/城市/站点信息。

我现在的位置:

我创建了一个自定义的帖子类型,以及城市和州的分类法。我假设每个站点都是一篇文章,我可以用分类法对它们进行分组。

我需要帮助的地方:

这件事的安排让我很困惑。我不确定我是否为上面列出的流正确设置了结构。如果您能帮助解释为上述流程设置帖子类型/分类法/模板的正确方法,我们将不胜感激!

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

我组织这件事的方式(我过去也这样做过)是为工作地点设置一个帖子类型,为地点设置一个层次分类法。

然后,您要做的是将州添加为位置分类法的顶层,然后将城市添加为州位置的子级。然后,可以将工作场地指定给城市和州。

通常,当您这样做时,如果您尝试查看一个州,而不是查看一个城市列表,您将看到该州的工作站点列表。这不是你想要的。因此,我们需要做的是修改位置的归档模板,以列出子类别,而不是工作站点。

因此,您需要创建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;
此方法非常灵活,允许您拥有所需的任意级别的位置,并且只有最低级别的位置才会显示工作站点。

相关推荐

Custom term templates

所以,我在网上做了一些研究,但没有找到可靠的答案,所以我来了。我需要为特定类别创建自定义woocommerce类别页面。例如,我有一个类别叫做“Awesome”。而不是使用由短代码生成的常规类别页面[product_category category=\"something\"], 我想为自定义特定类别页面Awesome.我发现我需要编辑taxonomy-product_cat.php 但我不知道如何将其链接到名为awesome.换句话说,我正在考虑制作php文件的自定义副本,然后将其添加为主题templ