I am using plugins called Advanced Custom Fields (ACF) and WooCommerce. I want to create a text and image field for WooCommerce product variation. I created fields in ACF and assigned them to "Post Type" > "product_variation"
.
But for I don't see these fields under product > Variations
. I searched and it looks like I have to write a custom code to accommodate these fields. I tried searching the problem and most of the suggestions and tutorials I founds are about creating custom fields via code and not using ACF which is not helping me as the fields have to be using ACF and that is because I am using Visual Composer to pull these ACF fields on front end.
It's not acf but you just have to add some code to your "function.php" of your child theme under /public_html/wp-content/themes/yourtheme-child/function.php.
Please have a look to this tutorial http://www.remicorson.com/mastering-woocommerce-products-custom-fields/
For instance, in my code I've added 2 fields for the RRP and another one for personal use (Price per Pair):
/* Adds RRP or PPP* price after each product price throughout the shop for user != Customer & Guest
.Not displayed in cart as it's not per var and we don't need to.
PPP = Price Per Pair (for product composite/bundle display)
================================================== */
// Display Fields
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
// Save Fields
add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );
function woo_add_custom_general_fields() {
global $woocommerce, $post;
// Text Field creation
woocommerce_wp_text_input(
array(
'id' => '_rrpprice',
'label' => __( 'RRP price ($)', 'woocommerce' ),
'placeholder' => 'e.g. 499',
'desc_tip' => 'true',
'description' => __( 'Enter the RRP .', 'woocommerce' )
)
);
woocommerce_wp_text_input(
array(
'id' => '_pppprice',
'label' => __( 'Price Per Pair*', 'woocommerce' ),
'placeholder' => 'e.g. 122',
'desc_tip' => 'true',
'description' => __( 'Enter the PPP (Price Per Pair) if Bundle/composite .', 'woocommerce' )
)
);
}
function woo_add_custom_general_fields_save( $post_id ){
// TextField save
$woocommerce_rrpprice = $_POST['_rrpprice'];
update_post_meta( $post_id, '_rrpprice', esc_html( $woocommerce_rrpprice ) );
if( !empty( $woocommerce_rrpprice ) )
// TextField save
$woocommerce_pppprice = $_POST['_pppprice'];
if( !empty( $woocommerce_pppprice ) )
update_post_meta( $post_id, '_pppprice', esc_html( $woocommerce_pppprice ) );
}
// Display Custom Field Value
if ( is_user_logged_in() && !(current_user_can('customer'))) {
function sv_change_product_price_display( $price ) {
$product = wc_get_product( get_the_ID() );
$priceRRP = get_post_meta( get_the_ID(), '_rrpprice', true );
$pricePPP = get_post_meta( get_the_ID(), '_pppprice', true );
if ( (is_shop() || is_product()) && !is_cart() ) { //double belt check
if($product->is_type( 'variable' )){
$price .= ' + GST<br /><span class="rrp-price">RRP: $' . $priceRRP .'</span>';
}else{
$price = ' <span class="rrp-price"><b>$' . $pricePPP .' + GST </b></span>' . '<br /><span class="rrp-price">RRP: $' . $priceRRP .'</span>';
}
}
return $price;
}
add_filter( 'woocommerce_get_price_html', 'sv_change_product_price_display' );
add_filter( 'woocommerce_cart_item_price', 'sv_change_product_price_display' );
}
If you have any question please feel free to ask.