在不同页面上拆分分类

时间:2020-07-10 作者:Dennis

我正在Woocommerce网站上工作,并创建了一个新的分类法activity. 我已将该分类添加到post类型产品中。

因此,产品可以具有以下特性之一activity:

博物馆食品和;饮料、景点、导游要展示我创造的所有产品taxonomy-activity.php 它已经显示了所有具有活动分类的产品。

但我必须在单独的页面上提供所有带有分类指导的产品。以及其他页面上的所有内容。因此将有2页:一页称为导游,只显示导游,另一页称为活动。

使用分类法{slug}这样做正确吗。或者我应该创建一个新页面。例如:page-guidedtours.php 它通过导游分类法遍历所有产品。和另一页page-activities.php 在没有导游分类的情况下循环浏览所有产品。

旁注:我使用FacetWP插件来显示产品和创建的过滤器。因此,查询是使用插件创建的,然后中的产品列表会显示一个短代码。

我当前的查询是:

<?php
return [
   "post_type" => [
   "product"
],
   "post_status" => [
   "publish"
],
   "posts_per_page" => "18",
   "orderby" => "title",
   "order" => "ASC",
];
我正在考虑创建两个方面。一个方面显示了导游。因此,在这种情况下,我必须将术语Guided tours添加到查询中。然后是没有导游这个词的其他方面。

1 个回复
SO网友:Jacob Peattie

为了显示所有产品,我创建了分类活动。php,它已经显示了所有具有活动分类法的产品。

那不是什么taxonomy-activity.php 用于。该模板是用于显示每个活动分类术语的帖子的模板。因此,如果您查看博物馆活动,该模板将用于显示所有博物馆产品,或者如果您查看食品和;饮料活动将使用相同的模板查看食物和;饮料产品。

模板本身不应选择要显示的帖子。WordPress已经这样做了。所有这些模板都应该用于展示这些帖子。要循环浏览WordPress已经查询过的产品,只需使用The Loop, 非自定义查询:

<?php 
if ( have_posts() ) : 
    while ( have_posts() ) : the_post(); 
        // Display product content
    endwhile; 
endif; 
?>
因此WordPress将自动为每个活动分类法提供一个存档,其中显示属于它的产品。您不需要为每个页面或模板创建页面或模板。

这同样适用于岗位类型。当您注册帖子类型(如产品)时,WordPress会自动对所有产品进行存档,如果has_archive 设置为true 或者是鼻涕虫。要为此存档创建唯一模板,您需要创建archive-product.php. 这将自动用于https://example.com/products/, 哪里products 是post类型名称,或slug传递到has_archive.

所以你需要的是archive-product.php 在以下位置查看所有产品时将使用https://example.com/products/, 和taxonomy-activity.php 查看每个活动链接时将使用这些链接,如https://example.com/activity/museum/https://example.com/activity/attractions/, 作为示例。

当要添加FacetWP支持来过滤这些归档文件时,您需要查阅他们的文档,因为第三方插件在这里是无关紧要的,但当涉及到所需的内置WordPress模板时,您需要像我描述的那样设置它们作为起点。