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

无法通过编程方式将WooCommerce产品设置为精选商品

WooCommerce批量创建产品无法设置为精选状态的解决方法

问题根源

你代码中通过更新_featured自定义字段设置产品精选状态的逻辑仅适用于WooCommerce 3.0之前的旧版本。WooCommerce 3.0及以上版本调整了产品属性存储规则,产品精选状态现已改为通过product_visibility分类法下的featured术语关联实现,直接修改自定义字段不会生效。

解决方案

推荐使用WooCommerce官方提供的CRUD操作类实现,兼容性最好,不会因版本更新失效:
在wp_insert_post获取到产品ID后,删除原有update_post_meta($post_id, '_featured', "true");代码,替换为以下内容:

// 初始化产品对象
$product = wc_get_product($post_id);
if ($product) {
    // 设置为精选产品
    $product->set_featured(true);
    // 保存修改
    $product->save();
}

修改后完整可用代码

<?php
$product_array =  array(
    "post_title" => $pro_data['value'][$i]['Website_x0020_Title'],
    "post_content" => $pro_data['value'][$i]['Parcel_x0020_Description'],
    "post_status" => "publish",
    "post_type" => "product"
); 

$post_id = wp_insert_post($product_array);
update_post_meta($post_id, '_price', $pro_data['value'][$i]['Cash_x0020_Price'] );
update_post_meta($post_id, "_manage_stock", "yes");

// 替换原有设置精选的代码,改用官方CRUD方法
$product = wc_get_product($post_id);
if ($product) {
    $product->set_featured(true);
    $product->save();
}

if($pro_data['value'][$i]['Stock_x0020_Number'] == 0){
    update_post_meta($post_id, '_stock', $pro_data['value'][$i]['Stock_x0020_Number']);
    update_post_meta($post_id, '_stock_status', 'outofstock' );
} else {
    update_post_meta($post_id, '_stock', $pro_data['value'][$i]['Stock_x0020_Number']);
    update_post_meta($post_id, '_stock_status', 'instock' );
}
update_field('down_payment', $pro_data['value'][$i]['Web_Deposit'], $post_id);
update_field('purchase_price_main', $pro_data['value'][$i]['Website_x0020_Purchase_x0020_Pri'], $post_id);
?>

替代方案(手动关联术语)

如果你不想使用CRUD类,也可以直接操作分类关联实现,效果一致:

wp_set_object_terms( $post_id, 'featured', 'product_visibility', true );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:48:01