You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WP Grid Builder如何为卡片正确添加对应post type类名

WP Grid Builder卡片添加文章类型类名实现方案

原有代码的问题

最初编写的代码存在3个明显问题:

  • 没有从钩子传入的$card对象中获取当前卡片对应的内容ID,直接调用$post->ID拿到的是主查询的当前页面ID,也就是放置WP Grid Builder短代码的页面ID,自然只能获取到page类型
  • 直接给$atts['class']赋值会覆盖卡片原有的所有默认类名,会破坏插件自带的卡片样式
  • 硬编码调用wpgb_get_grid_settings(1)属于无效冗余逻辑,还会导致代码只在ID为1的网格下生效,通用性差

正确实现代码

将原有代码替换为以下内容即可,支持所有网格,自动给每个卡片追加对应文章类型的类名,不会覆盖原有类:

function wpgb_add_post_type_card_class( $atts, $card ) {
    // 跳过非文章类型的卡片(比如分类项、用户项等)
    if ( ! isset( $card->object_type, $card->object_id ) || 'post' !== $card->object_type ) {
        return $atts;
    }

    $post_type = get_post_type( $card->object_id );
    if ( $post_type ) {
        // 追加类名,同时做安全转义避免非法字符
        $atts['class'] .= ' ' . sanitize_html_class( $post_type );
    }

    return $atts;
}
add_filter( 'wp_grid_builder/card/attributes', 'wpgb_add_post_type_card_class', 10, 2 );

内容的提问来源于stack exchange,提问作者Armoic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 16:42:16