WordPress分类无文章时无法显示默认提示文本,请求排查解决
问题排查与修复
你的代码核心问题及修复方案如下:
1. 翻译函数未输出内容
__('No items to show') 是WordPress的翻译函数,它仅返回字符串但不会自动输出到页面,必须搭配echo才能显示内容。原代码中的这一行:
<p><?php __('No items to show'); ?></p>
需要修改为:
<p><?php echo __('No items to show'); ?></p>
2. 确认$category_name变量有效性
虽然有文章时能正常显示,但需确保$category_name确实传递了正确的分类别名(slug)。如果变量为空或值错误,WP_Query会返回空结果,修复第一个问题后提示文本会正常显示,但仍需排查变量来源:
- 若在分类模板中,建议用
get_query_var('category_name')获取当前分类别名,替代直接使用未定义的$category_name。 - 可临时添加调试代码确认变量值:
// 在WP_Query前添加 echo '当前查询分类别名:' . $category_name;
修复后的完整代码
<?php // 确保获取正确的分类别名(分类模板场景) $category_name = get_query_var('category_name'); $the_query = new WP_Query( array( 'category_name' => $category_name, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish', 'posts_per_page' => 10, 'ignore_sticky_posts' => true, )); ?> <div class="category"> <?php if ( $the_query->have_posts() ) : ?> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <div class="category__details"> <a href="<?php the_permalink(); ?>"><h4><?php the_title(); ?></h4></a> </div> <?php endwhile; ?> <?php wp_reset_postdata(); ?> <?php else : ?> <p><?php echo __('No items to show'); ?></p> <?php endif; ?> </div>
修改后,分类下无文章时即可正常显示提示文本。
内容的提问来源于stack exchange,提问作者user3362364
相关产品推荐
相关产品推荐

