如何在WordPress的advisories分类为空时显示一行文本?
我来帮你搞定这段代码的问题,主要有几个关键错误需要修正:
1. in_category()的使用误区
WordPress的in_category()函数只会返回布尔值(true/false),用来判断当前文章是否属于某个分类,它不是一个包含count属性的对象,所以你用->count会直接触发PHP错误,导致代码完全不执行。
2. 逻辑与需求相反
你想要的是「分类为空时显示文本」,但原代码里写的是count > 0时输出,这正好搞反了逻辑,应该判断分类下文章数量为0的时候才显示内容。
3. 输出文本的语法错误
echo test;里的test没有加引号,PHP会把它当作常量解析,如果没定义这个常量就会报错,必须用单引号或双引号把文本包起来,比如echo '暂无内容';。
给你两个可行的修正方案,选一个适合你的场景:
方案一:直接通过分类别名获取文章数量(简洁版)
<?php // 通过分类别名获取分类对象,这里的'advisories'是分类的slug $advisories_cat = get_category_by_slug('advisories'); // 判断分类存在且文章数量为0时输出提示 if ($advisories_cat && $advisories_cat->count === 0) { echo '这个分类下暂时没有内容哦'; } ?>
方案二:用WP_Query查询(更灵活,适合复杂筛选)
如果需要额外筛选文章状态、类型等,可以用这个:
<?php $advisories_query = new WP_Query([ 'category_name' => 'advisories', 'posts_per_page' => -1, // 获取所有符合条件的文章 'post_status' => 'publish' // 只统计已发布的文章 ]); if ($advisories_query->post_count === 0) { echo '这个分类下暂时没有内容哦'; } // 重置查询,避免干扰后续的WordPress循环 wp_reset_postdata(); ?>
注意:如果你的分类是用ID而不是别名,把get_category_by_slug('advisories')换成get_category(分类ID)即可。
内容的提问来源于stack exchange,提问作者keithlatteri
相关产品推荐
相关产品推荐

