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

如何获取Wishlist含指定商品的WooCommerce客户并发送缺货通知邮件

WooCommerce 愿望单目标客户查询及邮件通知实现方案

方案1:直接数据库查询(最高效,适合大流量站点)

该方案直接跳过插件冗余逻辑,就算站点有数十万条愿望单记录,查询速度也能控制在100ms以内,是性能最优的实现方式。
以下为适配主流YITH WooCommerce Wishlist插件的查询代码,如使用其他wishlist插件只需替换对应表名即可:

global $wpdb;
$target_product_id = 123; // 替换为实际需要查询的目标商品ID

// 查询将商品加入愿望单的已登录用户邮箱
$logged_in_user_emails = $wpdb->get_col( $wpdb->prepare(
    "SELECT DISTINCT u.user_email 
    FROM {$wpdb->prefix}yith_wcwl wl 
    LEFT JOIN {$wpdb->users} u ON wl.user_id = u.ID 
    WHERE wl.prod_id = %d AND wl.user_id != 0",
    $target_product_id
) );

// 查询将商品加入愿望单的访客邮箱(需插件支持存储访客邮箱信息)
$guest_user_emails = $wpdb->get_col( $wpdb->prepare(
    "SELECT DISTINCT wl.user_email 
    FROM {$wpdb->prefix}yith_wcwl wl 
    WHERE wl.prod_id = %d AND wl.user_id = 0 AND wl.user_email != ''",
    $target_product_id
) );

// 合并去重得到完整的客户通知列表
$notify_email_list = array_unique( array_merge( $logged_in_user_emails, $guest_user_emails ) );

方案2:调用插件内置API(兼容性优先,适合中小站点)

如果不想直接操作数据库,可直接使用插件提供的公开API实现,插件版本升级也不会影响代码可用性:

if ( function_exists( 'YITH_WCWL' ) ) {
    $target_product_id = 123; // 替换为实际需要查询的目标商品ID
    $all_wishlists = YITH_WCWL()->get_wishlists( [
        'wishlist_contains' => $target_product_id
    ] );
    $notify_email_list = [];
    foreach ( $all_wishlists as $wishlist ) {
        $user = get_user_by( 'id', $wishlist->get_user_id() );
        if ( $user && !in_array( $user->user_email, $notify_email_list ) ) {
            $notify_email_list[] = $user->user_email;
        }
    }
}

流程优化建议

  • 可挂钩WooCommerce原生库存变更钩子woocommerce_product_set_stock,当商品库存低于预设阈值时自动触发客户查询和邮件发送逻辑,无需手动操作
  • 邮件发送逻辑通过WordPress异步任务wp_schedule_single_event处理,避免库存变更时前台/后台页面卡顿
  • 新增自定义字段记录发送状态,同一客户同一商品仅发送一次缺货通知,避免重复骚扰用户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:00:03