在WordPress循环内获取自定义文章类型stm_media_gallery的分类名称
解决方案
没问题,我来帮你搞定这个需求!下面是修改后的完整WP_Query循环代码,能同时显示自定义文章类型的标题和对应的分类名称:
<?php // 初始化自定义文章类型查询 $gallery_query = new WP_Query( array( 'post_type' => 'stm_media_gallery', 'posts_per_page' => -1 ) ); // 检查是否有文章 if( $gallery_query->have_posts() ) : while( $gallery_query->have_posts() ) : $gallery_query->the_post(); // 获取当前文章的分类信息 // 注意:如果你的自定义文章类型用的是**自定义分类法**,请把下面的'category'替换成你的分类法slug(比如'stm_gallery_categories') $gallery_categories = get_the_terms( get_the_ID(), 'category' ); ?> <div class="gallery-item"> <!-- 显示文章标题 --> <h3><?php the_title(); ?></h3> <!-- 显示分类名称 --> <div class="gallery-categories"> <?php if( $gallery_categories && !is_wp_error( $gallery_categories ) ) : foreach( $gallery_categories as $category ) : echo '<span class="category-tag">' . esc_html( $category->name ) . '</span>'; endforeach; endif; ?> </div> </div> <?php endwhile; // 重置文章数据,避免影响后续查询 wp_reset_postdata(); else : // 如果没有文章显示提示 echo '<p>No gallery items found.</p>'; endif; ?>
关键细节说明:
- 获取分类信息:用
get_the_terms()函数,参数分别是当前文章ID和分类法slug。如果你的自定义文章类型关联的是自己创建的分类法(不是默认的文章分类),一定要把第二个参数改成你创建分类法时设置的slug,否则会获取不到分类。 - 错误处理:加入了
!is_wp_error()判断,避免因为分类不存在或者获取失败导致页面报错。 - 安全输出:用
esc_html()包裹分类名称,防止XSS攻击,保证输出安全。 - 重置查询:循环结束后调用
wp_reset_postdata(),恢复全局$post变量,避免影响后续的WordPress查询逻辑。
如果你的自定义分类法slug不确定,可以在后台对应分类管理菜单下查看,或者用get_taxonomies()函数列出所有可用的分类法来确认。
内容的提问来源于stack exchange,提问作者Vivek
相关产品推荐
相关产品推荐

