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

如何仅为含特定状态的WooCommerce订单显示图片或文本

实现仅显示给有已发货订单用户的内容

首先修正你原代码的关键问题,再给出完整的实现方案:

修正后的订单状态检查函数

原代码可能因WooCommerce订单状态的前缀规则导致查询失效——WooCommerce的自定义订单状态会自动添加wc-前缀,因此shipped状态实际对应的查询参数是wc-shipped。同时优化查询效率,仅返回订单ID而非完整订单对象:

function check_user_has_shipped_orders() {
    if ( ! is_user_logged_in() ) {
        return false;
    }

    $user_id = get_current_user_id();
    
    // 查询是否存在已发货订单,仅返回ID提升性能
    $shipped_orders = wc_get_orders( array(
        'limit'    => 1,
        'customer' => $user_id,
        'status'   => 'wc-shipped',
        'return'   => 'ids',
    ) );

    return ! empty( $shipped_orders );
}

三种实现显示指定内容的方式

方式1:短代码调用(适合页面/文章/小工具)

注册短代码后,直接在后台编辑时插入[shipped_user_content]即可显示内容:

add_shortcode( 'shipped_user_content', 'display_shipped_user_content' );
function display_shipped_user_content() {
    if ( check_user_has_shipped_orders() ) {
        // 替换为你需要显示的图片或文本
        return '<div class="shipped-exclusive">这是仅给已发货订单用户的专属内容<br><img src="你的图片地址" alt="专属标识"></div>';
    }
    return '';
}

方式2:主题模板中直接判断(适合自定义模板位置)

如果要在主题的模板文件(比如header.php、myaccount.php等)中显示内容,直接用条件判断输出:

<?php if ( check_user_has_shipped_orders() ) : ?>
    <div class="shipped-only-content">仅已完成发货订单的用户可见</div>
<?php endif; ?>

方式3:CSS控制元素显示(适合已有目标元素类的情况)

先给body添加标识类,再用CSS控制目标元素的显示隐藏:

  1. 添加body类的PHP代码:
add_filter( 'body_class', 'add_shipped_user_body_class' );
function add_shipped_user_body_class( $classes ) {
    if ( check_user_has_shipped_orders() ) {
        $classes[] = 'has-shipped-orders';
    }
    return $classes;
}
  1. 在主题样式文件(style.css)中添加CSS:
/* 默认隐藏目标元素 */
.your-target-class {
    display: none;
}

/* 当用户有已发货订单时显示 */
.has-shipped-orders .your-target-class {
    display: block;
}

注意事项

  • 确认你的自定义订单状态slug确实是shipped,如果是其他名称(比如order-shipped),要将查询参数改为wc-order-shipped
  • 所有PHP代码请添加到主题的functions.php文件或自定义插件中,不要修改WooCommerce核心文件
  • 如果网站开启了页面缓存,需确保相关内容的缓存是动态的,避免显示错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:33:38