您发布的代码正在循环浏览该帖子分配的所有类别。
foreach构造一个字符串,表示它要检查的每个可能的模板文件,并将它们全部分配给$template.
这个locate_template() 函数将通过$templates 数组并返回实际存在的第一个数组。这就是将分配给$模板变量的内容。
如果事实证明这些文件都不存在,我相信locate_template() 将返回false。那里的代码只是检查locate_template() 在将模板分配给之前找到了任何模板$template.
然后,整个函数将该模板的名称返回给过滤器,如果您返回实际字符串,过滤器将加载该模板,否则它将继续沿着模板层次结构向下移动到“single”之后的下一种类型的模板。
编辑:其他信息
get_the_terms 使用
wp_get_object_terms 默认情况下,它将按名称升序返回术语,因此如果一篇文章属于多个类别,您将始终按字母顺序加载第一个术语的模板。要更改此行为,请使用
wp_get_object_terms 直接将orderby参数指定为“count”、“slug”、“term\\u group”、“term\\u order”或“term\\u id”。