如何解决向所有 Woocommerce 产品变体添加单个自定义字段及其静态值
我正在尝试向 Woocommerce 中的所有可变产品添加自定义字段和静态值。我已经解决了其他问题,但它们与创建全新的变化有关。我只需要向现有变体添加/更新自定义字段。这是我需要在每个变体 postMeta 中添加的内容:add_post_Meta($variation_id,'_wc_facebook_product_image_source','parent_product');
我不知道如何为所有变体的每个循环执行。
我需要这样做是因为我们有数以千计的产品通过数据馈送(Dropshipping 网站)导入。此自定义字段用于将数据发送到 Facebook 以进行 Catalogue。我们需要挂钩一个动作,每当添加一个新的可变产品时,它的所有变体都会在 postMeta 中添加自定义字段,并将值添加为“parent_product”。我已经添加了这个过滤器来更改简单产品的数据。并且适用于所有简单的产品。但问题是具有变体的可变产品无法获得此自定义字段。
这是我的简单产品代码:
add_filter ('facebook_for_woocommerce_integration_prepare_product','fix_image_url',100,2);
function fix_image_url( $product_data,$product_id ){
if( empty( $product_data ) || empty( $product_id ) )
{
return $product_data;
}
$product_image = get_post_meta( $product_id,"_bdroppy_url",true );
if( isset( $product_image['img_url'] ) && !empty($product_image['img_url'] ) ) {
$image_override = get_post_meta($product_id,'fb_product_image',true);
$image_option_override = get_post_meta($product_id,true);
if ( empty($image_override ) )
{
add_post_Meta($product_id,$product_image['img_url'] );
}
if ( !empty($image_override ) )
{
update_post_Meta($product_id,$product_image['img_url'] );
}
if ( empty($image_option_override) )
{
add_post_Meta($product_id,'custom');
}
if ( !empty($image_option_override) && $image_option_override = 'product' )
{
update_post_Meta($product_id,'custom');
}
}
return $product_data;}
非常感谢您的帮助!
解决方法
我想我找到了为每个变体循环添加的答案:
if ( $product->is_type( 'variable' ) ) {
foreach ( $product->get_visible_children() as $variation_id ) {
//gets the product variation based on its id but not used here
$get_product_variation = wc_get_product( $variation_id );
$image_option_override_var = get_post_meta($variation_id,'_wc_facebook_product_image_source',true);
if ( empty($image_option_override_var) )
{
add_post_meta($variation_id,'parent_product');
}
if ( !empty($image_option_override_var) && $image_option_override = 'product' )
{
update_post_meta($variation_id,'parent_product');
}
}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。