簡體   English   中英

在 WooCommerce 產品變體中顯示 ACF 自定義字段

[英]Display ACF custom field in WooCommerce product variations

我在后端的產品變體中成功地在 WooCommerce 中創建了一個 ACF 自定義字段。 該字段在每個變體中正確顯示。

但是在編輯了變體中的這個或其他字段后,我無法再保存整個變體選項卡了 加載/保存指示圈繼續無限旋轉。 並且自定義字段未顯示在前端的單個產品變體中。

我所做的是將以下代碼添加到我的functions.php中。php:

/* ACF filter for Variations */

// Render fields at the bottom of variations - does not account for field group order or placement.
$GLOBALS['wc_loop_variation_id'] = null;

function is_field_group_for_variation($field_group, $variation_data, $variation_post) {
    return (preg_match( '/Variation/i', $field_group['title'] ) == true);
}

add_action( 'woocommerce_product_after_variable_attributes', function( $loop_index, $variation_data, $variation_post ) {
        $GLOBALS['wc_loop_variation_id'] = $variation_post->ID;

        foreach ( acf_get_field_groups() as $field_group ) {
            if ( is_field_group_for_variation( $field_group, $variation_data, $variation_post ) ) {
                acf_render_fields( $variation_post->ID, acf_get_fields( $field_group ) );
            }
        }

        $GLOBALS['wc_loop_variation_id'] = null;
    }, 10, 3 );

add_action( 'woocommerce_save_product_variation', function( $variation_id, $loop_index ) {
        if ( !isset( $_POST['acf_variation'][$variation_id] ) ) {
            return;
        }

        $_POST['acf'] = $_POST['acf_variation'][$variation_id];

        acf()->input->save_post( $variation_id );
    }, 10, 2 );

add_filter( 'acf/prepare_field', function ( $field ) {
        if ( !$GLOBALS['wc_loop_variation_id'] ) {
            return $field;
        }

        $field['name'] = preg_replace( '/^acf\[/', 'acf_variation[' . $GLOBALS['wc_loop_variation_id'] . '][', $field['name'] );

        return $field;
    }, 10, 1);

//add ACF rule
add_filter('acf/location/rule_values/post_type', 'acf_location_rule_values_Post');
function acf_location_rule_values_Post( $choices ) {
    $choices['product_variation'] = 'Product Variation';
    //print_r($choices);
    return $choices;
}

/* End */

任何幫助,將不勝感激。

acf()->input->save_post( $variation_id );

應該

do_action( 'acf/save_post', $variation_id );

從這里歸功於 onoweb https://support.advancedcustomfields.com/forums/topic/acf-on-product-variations-almost-works/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM