Невозможно получить идентификатор варианта продукта woocoommerce

Я пытаюсь обновить определенное поле для всех вариантов в продукте, но, к сожалению, я не могу получить идентификаторы вариантов, чтобы идти дальше.

По сути, я пытаюсь получить стоимость акций каждого варианта, и если стоимость акций меньше нуля, я обновляю определенное поле с определенными значениями (как указано в моем коде ниже).

Я проверил это путем ручного ввода любого пользовательского идентификатора записи / варианта и работает нормально, обновляя этот конкретный идентификатор варианта на основе его стоимости акций. Все, что я застрял здесь, это то, что я не могу получить идентификатор варианта самостоятельно.

Ниже приведен код, который я использую:

global $post, $woocommerce;
$post_id = $variation->ID;

// Get specific data from the certain custom fields using get_post_meta( $post_id, $key, $single );
$stock = get_post_meta( $post_id, '_stock', true );

if ($stock < 1) {
update_post_meta( $post_id, 'cuzd-prod-general-v', '20,25' );
} else {
update_post_meta( $post_id, 'cuzd-prod-general-v', '1,5' );
}

Я не знаю, где я неправ, чтобы получить идентификаторы вариаций для этого.

0

Решение

Я смог решить эту проблему, используя следующие изменения кода:

// Values to be updated
$in_stock   = '1,5';
$out_of_stock   = '20,30';

// Get variations
$args = array(
'post_type'     => 'product_variation',
'post_status'   => array( 'private', 'publish' ),
'numberposts'   => -1,
'orderby'       => 'menu_order',
'order'         => 'asc',
'post_parent'   => $post->ID
);
$variations = get_posts( $args );

foreach ( $variations as $variation ) {

$variation_id           = absint( $variation->ID );$variable_id = $this['variation_id'];
$variation_post_status  = esc_attr( $variation->post_status );
$variation_data         = get_post_meta( $variation_id );
$variation_data['variation_post_id'] = $variation_id;// Get specific data from the certain custom fields using get_post_meta( $post_id, $key, $single );
$stock = get_post_meta( $variation_data['variation_post_id'], '_stock', true );if ($stock < 1) {
update_post_meta( $variation_data['variation_post_id'], 'cuzd-prod-general-v', $out_of_stock );
} else {
update_post_meta( $variation_data['variation_post_id'], 'cuzd-prod-general-v', $in_stock );
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]