В зависимости от того, где вы запускаете эту функцию, вы должны определить аргумент $product_id
в функции ACF get_field()
.
Вопросы для уточнения: Как вы запускаете эту функцию? вы используете ловушку?
Обновление : функция подключена к woocommerce_process_product_meta
, поэтому при создании или обновлении продукта запускается код.
Также ваш код можно упростить, оптимизировать и сжать следующим образом:
add_action( 'woocommerce_process_product_meta', 'save_my_custom_settings' );
function upload_all_images_to_product( $product_id, $image_ids = array(); ) {
// Loop from 1 to 6
for ( $i = 1; $i <= 6; $i++ ) {
$field_key = 'images'.( $i == 1 ? '' : '-'.$i );
// Check that the custom field exists
if( $field_value = get_field( $field_key, $product_id ) )
$image_ids[] = $field_value; // Set each ACF field value in the array
}
if( ! empty($image_ids) ) {
// Take the first image (removing it from the array) and set it as the featured image
set_post_thumbnail( $product_id, array_shift($image_ids) );
}
if( ! empty($image_ids) ) {
// Set the remaining array images ids as a coma separated string for gallery images
update_post_meta( $product_id, '_product_image_gallery', implode(',', $image_ids) );
}
}
Код входит в functions. php файл вашей активной дочерней темы (или активной темы). непроверенный, он может работать.