如何通过PHP代码将指定ID的WooCommerce商品标记为特色商品?
解决WooCommerce通过代码标记商品为特色的问题
以下是针对你遇到的代码失效问题的修正方案及排查要点:
方法一:使用官方推荐的CRUD API(兼容新版WooCommerce)
直接实例化WC_Product在部分场景下可能无法正确处理商品类型(如变体商品),官方推荐用wc_get_product()获取商品对象:
// 目标商品ID $product_id = 43706; // 获取商品对象 $product = wc_get_product($product_id); // 验证商品存在后设置为特色 if ($product && $product->exists()) { $product->set_featured(true); $product->save(); }
方法二:直接更新Post元数据(快速操作)
原代码的问题在于调用了已弃用的$ecd_product->id属性,改用直接传入商品ID即可:
$product_id = 43706; // 先验证该ID对应内容为商品 if (get_post_type($product_id) === 'product') { // 设置特色商品标记 update_post_meta($product_id, '_featured', 'yes'); // 清除商品缓存确保变更立即生效 wc_delete_product_transients($product_id); }
常见排查要点
- 确保代码在WooCommerce初始化后执行:比如放在主题
functions.php中,或者挂载到init钩子上,避免在WooCommerce未加载时运行代码。 - 检查权限:执行代码的用户需要拥有修改商品的权限(如管理员权限)。
- 清除缓存:WooCommerce会缓存商品数据,修改后需清除站点缓存或调用
wc_delete_product_transients()刷新单商品缓存。
内容的提问来源于stack exchange,提问作者Mohamed Ali
相关产品推荐
相关产品推荐

