将单个自定义字段及其静态值添加到所有Wooccommerce产品变体中



我正试图为Wooccommerce中的所有可变产品添加一个自定义字段和一个静态值。我已经讨论了其他问题,但它们与创造全新的变体有关。我只需要将自定义字段添加/更新到现有的变体中。以下是我需要在每个变体postmeta中添加的内容:add_post_meta($variation_id, '_wc_facebook_product_image_source', 'parent_product');我不知道如何为所有变体的每个循环执行。

我需要这样做是因为我们有成千上万的产品通过数据馈送(Dropshipping网站(导入。这个自定义字段用于将数据发送到Facebook以获取目录。我们需要挂起一个操作,每当添加一个新的变量产品时,它的所有变体都会在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, '_wc_facebook_product_image_source', true);
if ( empty($image_override ) )
{
add_post_meta($product_id, 'fb_product_image', $product_image['img_url'] );
}
if ( !empty($image_override ) )
{
update_post_meta($product_id, 'fb_product_image', $product_image['img_url'] );
}
if ( empty($image_option_override) )
{
add_post_meta($product_id, '_wc_facebook_product_image_source', 'custom');
}
if ( !empty($image_option_override) && $image_option_override = 'product' )
{
update_post_meta($product_id, '_wc_facebook_product_image_source', '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, '_wc_facebook_product_image_source', 'parent_product');
}
if ( !empty($image_option_override_var) && $image_option_override = 'product' )
{
update_post_meta($variation_id, '_wc_facebook_product_image_source', 'parent_product');
}
}}  

最新更新