如果您查看二零一五主题(和其他捆绑主题),您会发现类似于以下内容的代码:(这是从inc/template-tags.php
)
$categories_list = get_the_category_list( _x( \', \', \'Used between list items, there is a space after the comma.\', \'twentyfifteen\' ) );
if ( $categories_list && twentyfifteen_categorized_blog() ) {
printf( \'<span class="cat-links"><span class="screen-reader-text">%1$s </span>%2$s</span>\',
_x( \'Categories\', \'Used before category names.\', \'twentyfifteen\' ),
$categories_list
);
}
很明显,你对
$category_list
, 因此,正是基于此,无论为一篇文章分配了多少类别,都应该显示您的列表。
曲线球位于&& twentyfifteen_categorized_blog()
您的if
条件在这里,您可以看到您的条件语句失败了。但首先,让我们看看twentyfifteen_categorized_blog()
功能(正如我所说,其他捆绑主题也有类似的功能)
function twentyfifteen_categorized_blog() {
if ( false === ( $all_the_cool_cats = get_transient( \'twentyfifteen_categories\' ) ) ) {
// Create an array of all the categories that are attached to posts.
$all_the_cool_cats = get_categories( array(
\'fields\' => \'ids\',
\'hide_empty\' => 1,
// We only need to know if there is more than one category.
\'number\' => 2,
) );
// Count the number of categories that are attached to the posts.
$all_the_cool_cats = count( $all_the_cool_cats );
set_transient( \'twentyfifteen_categories\', $all_the_cool_cats );
}
if ( $all_the_cool_cats > 1 ) {
// This blog has more than 1 category so twentyfifteen_categorized_blog should return true.
return true;
} else {
// This blog has only 1 category so twentyfifteen_categorized_blog should return false.
return false;
}
}
此功能的作用是统计站点上有多少类别,但它只统计实际分配了帖子的类别数量。
在您的示例中,仅使用默认帖子Hello World
(根本没有其他帖子),如果您只分配uncategorized
类别或仅sample
类别,这意味着只有其中一个类别分配了一个帖子,另一个类别将为空。因为我们在中隐藏了空类别get_categories()
内部twentyfifteen_categorized_blog()
作用get_categories()
将只返回一个类别,即分配了职位的类别。
现在,如果你看看twentyfifteen_categorized_blog()
函数,如果返回的类别总数get_categories
为0或1时,函数将返回false
, 这不符合您的条件,这就是为什么您看不到正在显示的分配给您的帖子的类别。
如果您将这两个类别都分配给该职位,get_categories
将返回2个类别(任何时候返回的最大数量),因为这两个类别都有一个分配给它的帖子,这将使函数返回true,并将激发和显示您的状态。
当您创建越来越多的类别并为其分配帖子时,get_categories()
内部twentyfifteen_categorized_blog()
将始终返回2个cateriories(,因为我们最多只查询2个),这将始终让twentyfifteen_categorized_blog()
回来true
只要一篇文章至少分配了一个类别,它就会一直激发你的代码