WordPress实现点击指定分类法项展示对应自定义文章内容
实现点击艺术家展示对应歌曲的方案
每个分类法术语(即你创建的艺术家)本身自带term_id(唯一ID)和slug(别名),这两个字段都可以作为标识来实现需求。具体分两步操作:
1. 给艺术家名称添加可点击链接
修改你现有的艺术家列表代码,为每个艺术家名称生成带标识参数的链接:
<?php $terms = get_terms([ 'taxonomy' => 'artists', 'hide_empty' => true, // 可选:只显示关联了歌曲的艺术家 ]); if (!empty($terms)) { foreach ($terms as $term) { // 以slug为参数构造页面链接,也可以替换成term_id $artist_link = add_query_arg('artist_slug', $term->slug, get_permalink()); // 输出带安全处理的链接与名称 echo '<a href="' . esc_url($artist_link) . '">' . esc_html($term->name) . '</a>'; echo "<br><br>"; } } ?>
2. 接收参数并查询对应歌曲
在同一页面(或指定的歌曲展示页面)添加以下代码,获取点击传递的参数,然后查询该艺术家下的所有Music类型文章:
<?php // 检测是否有艺术家参数传入 if (isset($_GET['artist_slug'])) { $artist_slug = sanitize_text_field($_GET['artist_slug']); // 查询该艺术家关联的歌曲 $songs_query = new WP_Query([ 'post_type' => 'Music', 'tax_query' => [ [ 'taxonomy' => 'artists', 'field' => 'slug', 'terms' => $artist_slug, ], ], 'posts_per_page' => -1, // 显示所有歌曲,可按需修改数量 ]); // 渲染歌曲列表 if ($songs_query->have_posts()) { $artist_name = get_term_by('slug', $artist_slug, 'artists')->name; echo '<h3>' . esc_html($artist_name) . ' 的歌曲</h3>'; echo '<ul>'; while ($songs_query->have_posts()) { $songs_query->the_post(); echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>'; } echo '</ul>'; wp_reset_postdata(); // 重置查询状态,避免影响后续内容 } else { echo '<p>该艺术家暂无发布歌曲</p>'; } } ?>
补充说明
- 若想用
term_id作为标识,只需把链接参数改为artist_id,查询时将field设为term_id,用$_GET['artist_id']获取值即可。 - 代码中使用
esc_url、esc_html、sanitize_text_field是为了保证输出安全,避免XSS漏洞。
内容的提问来源于stack exchange,提问作者Jane
相关产品推荐
相关产品推荐

