请求修改WP跳转菜单代码:将文章标题替换为子分类
修改后的跳转菜单代码(显示子分类)
Got it, let's tweak your code to show subcategories (regions) under the "Consultant" category instead of post titles. Here's the updated full code:
<!-- sidebar drop-down list --> <div class="consultant-sidebar"> <h3>Find consultant by region</h3> <?php $cat_id = get_cat_ID('consultant'); // 获取Consultant分类下的子分类 $subcategories = get_terms(array( 'taxonomy' => 'category', 'parent' => $cat_id, 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => false, // 设置为true则只显示有文章的子分类 )); if (!empty($subcategories) && !is_wp_error($subcategories)) { ?> <form name="jump"> <select name="menu"> <?php foreach ($subcategories as $subcat) : ?> <option value="<?php echo esc_url(get_term_link($subcat)); ?>"> <?php echo esc_html($subcat->name); ?> </option> <?php endforeach; ?> </select> <input type="button" onClick="location=document.jump.menu.options[document.jump.menu.selectedIndex].value;" value="Go"> </form> <?php } else { ?> <p>No regions found under Consultants.</p> <?php } ?> <h3><a href="https://gouldingprocess.com/interns/">Sleeptalk® Interns</a></h3> </div> <!-- -->
关键改动说明:
- 替换数据获取方式:把原来拉取文章的
WP_Query换成了get_terms(),这是WordPress专门用来获取分类/标签等术语的函数,更适合获取子分类。 - 参数配置:
taxonomy设为category(我们用的是默认文章分类法)parent指定为$cat_id,确保只获取"Consultant"分类的直接子分类orderby和order保持按名称升序排列,和你原来的需求一致hide_empty:如果设为true,只会显示包含已发布文章的子分类;设为false则显示所有子分类(哪怕没有文章),你可以根据需求调整
- 输出逻辑:循环子分类时,用
get_term_link()获取分类的归档页面链接,用$subcat->name输出子分类名称,同时用esc_url()和esc_html()做安全转义,符合WordPress开发规范 - 空状态处理:添加了子分类为空时的提示,避免页面出现空白区域,提升用户体验
- 标题调整:把原来的"Find consultant by name"改成了"Find consultant by region",更贴合现在的功能
内容的提问来源于stack exchange,提问作者Kitka
相关产品推荐
相关产品推荐

