Следующая функция использует очень легкий SQL-запрос для получения идентификатора варианта для переменного продукта для заданных атрибутов продукта «цвет» и «размер» термин «слагы»:
function get_product_variation_id( $size, $color, $product_id = 0 ) {
global $wpdb;
if ( $product_id == 0 )
$product_id = get_the_id();
return $wpdb->get_var( "
SELECT p.ID
FROM {$wpdb->prefix}posts as p
JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
JOIN {$wpdb->prefix}postmeta as pm2 ON p.ID = pm2.post_id
WHERE pm.meta_key = 'attribute_pa_color'
AND pm.meta_value LIKE '$color'
AND pm2.meta_key = 'attribute_pa_size'
AND pm2.meta_value LIKE '$size'
AND p.post_parent = $product_id
" );
}
Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Проверено и работает.
USAGE (2 примера) :
1) Из идентификатора продукта определенной переменной (где 746
- идентификатор продукта родительской переменной):
$variation_id = get_product_variation_id( 'large', 'blue', 746 );
2) На странице отдельного продукта с переменным продуктом (Нет необходимости определять переменный идентификатор продукта) :
$variation_id = get_product_variation_id( 'large', 'blue' );