
当使用 WP Gridbuilder 的动态筛选(如 _categories 参数)时,页面并非标准分类归档页,需通过分类别名手动查询对应分类对象并提取 description 字段。
当使用 wp gridbuilder 的动态分类筛选功能时,页面 url 可能形如 domain.com/music/?_categories=8-bit-chiptune,此时 wordpress 并未加载原生分类归档上下文,因此 category_description() 等依赖全局查询变量的函数将失效。需主动解析 url 参数,按 slug 查找分类,并安全提取其描述内容。
要实现这一目标,核心步骤是:
- 从
$_GET中安全获取_categories参数值(即分类别名); - 使用
get_category_by_slug()获取对应的WP_Term对象; - 验证对象有效性后,输出
$term->description(注意:该字段存储的是富文本描述,已自动转义,但若需渲染 HTML,建议配合wp_kses_post()进一步过滤)。
以下是推荐使用的健壮代码示例:
<?php if ( isset( $_GET['_categories'] ) && ! empty( $_GET['_categories'] ) ) {
$cat_slug = sanitize_key( $_GET['_categories'] ); // 安全过滤 slug
$term = get_term_by( 'slug', $cat_slug, 'category' );
if ( $term && ! is_wp_error( $term ) && isset( $term->description ) ) {
// 若需保留格式化 HTML(如换行、链接),可启用:
echo wp_kses_post( $term->description );
// 若仅需纯文本,可用:
// echo esc_html( $term->description );
} else {
echo '<p class="no-description">暂无分类描述。</p>';
}
}
?>
⚠️ 注意事项:
- 始终对用户输入(如
$_GET)进行校验与清理,sanitize_key()可防止非法字符注入; -
get_term_by('slug', ...)比get_category_by_slug()更通用且明确指定 taxonomy,推荐优先使用; - 分类描述可能为空,务必做存在性判断,避免 PHP Notice;
- 若主题或插件启用了分类自定义字段(如 ACF),请确认是否应优先读取自定义描述而非原生
description字段。
此方法不依赖主查询(WP_Query)状态,完全适配 WP Gridbuilder 的 AJAX/URL 参数驱动模式,可安全集成至任意模板区域(如筛选结果上方的分类头信息区)。










