在Wordpress中显示分类法

问题描述

我有一个包含三个自定义分类法的WordPress网站。他们已经配置并正常工作,每个帖子都标有一些帖子,并且希望运行与它们相关的代码。根据文档,如果自定义分类法是猫,狗和树,并且我想在猫上运行PHP,经过大量的尝试之后,我认为我应该创建一个模板并将其称为“分类法” -cats.PHP”:

taxonomy- {taxonomy} .PHP:例如,如果该分类法名为“ soMetax”,则wordpress会查找名为taxonomy-soMetax.PHP文件

但是我仍然没有得到什么:文档说“ WordPres会寻找”。为什么WP寻找它而不是其他?我想我至少必须告诉它要搜索内容或时间。我如何或在哪里告诉WP寻找它?

function buildMonth(DateTimeImmutable $date)
{
  # array will hold months
  $months = [
    $date->format('m'),// the month of $date
    $date->add(new DateInterval('P1M'))->format('m'),// add one month
  ];
  // .....

  return $months;
}

print_r(buildMonth(new DateTimeImmutable('2020-09-22 18:17:31 +0300')));

作为模板,我发现可以在管理中将其添加为帖子的属性,但是如果我尝试获取分类法的ID时进入该页面,则可以获取该帖子的ID

解决方法

Wordpress使用循环显示帖子。无论您在哪里,大多数时候都在使用该循环。

The Loop是WordPress用于显示帖子的PHP代码。使用 循环,WordPress处理每个帖子以显示在当前 页,并根据其与指定条件匹配的方式对其进行格式化 在The Loop标签中。循环中的任何HTML或PHP代码都将是 在每个帖子上进行处理。

来源@ https://codex.wordpress.org/The_Loop

Wordpress也基于模板层次结构系统。除了基本的index.php模板文件之外,您可以选择是否要实现特定的模板文件。

WordPress使用查询字符串来确定哪个模板或一组 模板应用于显示页面。查询字符串是 指向您每个部分的链接中包含的信息 网站。

You can take a look at this image to have a visual understanding of the Wordpress templates hierarchy.

来源@ https://developer.wordpress.org/themes/basics/template-hierarchy/

对于您来说,在显示dogs分类法时,Wordpress会按该顺序查找以下文件:taxonomy-pets-dogs.php如果不存在此模板,它将继续寻找宠物taxonomy-pets.php ,如果不存在,则继续进行taxonomy.php ...等等 (其中pets是分类法的名称,而dogs是该分类法中的术语)

通过指定taxonomy-pets-dogs.php,您可以为该特定术语创建自定义模板。如果catsdogs都没有相同的模板,如果两者都使用taxonomy.phptaxonomy-pets.php并且没有特定的模板。

但是无论如何,taxonomy-{taxonomy}.phptaxonomy-{taxonomy}-{term}.php将始终使用循环来显示帖子和术语。像其他模板一样。

<?php if ( have_posts() ) :
while ( have_posts() ) : the_post();
   echo the_title().'<br/>';
endwhile; else :
   echo 'No posts found!';
endif; ?>