Возникла проблема в моем магазине, где я хочу настроить скрытые поля ввода. Каждое поле относится к идентификатору варианта моего продукта (все они имеют три варианта)
<input type="hidden" class="one" name="id" value"value-of-first-variation"/>
<input type="hidden" class="two" name="id" value"value-of-second-variation"/>
<input type="hidden" class="three" name="id" value"value-of-three-variation"/>
Но я очень запутался, как это сделать. Я видел несколько публикаций в SO о получении всех идентификаторов вариантов, но не уверен, как выполнить этот последний шаг и получить значение каждого из этих полей ввода, чтобы получить правильный идентификатор. Есть идеи?
Чтобы получить все варианты ID любого продукта, попробуйте это —
$args = array(
'post_type' => 'product_variation',
'post_status' => array( 'private', 'publish' ),
'numberposts' => -1,
'orderby' => 'menu_order',
'order' => 'asc',
'post_parent' => get_the_ID() // get parent post-ID
);
$variations = get_posts( $args );
foreach ( $variations as $variation ) {
// get variation ID
$variation_ID = $variation->ID;
// get variations meta
$product_variation = new WC_Product_Variation( $variation_ID );
// get variation featured image
$variation_image = $product_variation->get_image();
// get variation price
$variation_price = $product_variation->get_price_html();
}
ИЛИ ЖЕ
$available_variations = $product->get_available_variations();
И если вы хотите добавить все продукты варианта в корзину, одним щелчком мыши (согласно вашему комментарию), то вы можете использовать функцию jquery, где вы сначала получите весь идентификатор варианта (после загрузки страницы), а затем используйте ajax, где вы необходимо отправить все входные данные (идентификаторы вариаций) на другую страницу ajax, и в ответ вы получите все идентификаторы вариаций в ссылке, например:
abc.com/?add-to-cart=121:1,538:1
Здесь указан первый параметр идентификатора варианта, а второй (после 🙂 — количество. Вы можете добавить несколько идентификаторов вариантов отдельно с помощью (,).
Затем замените кнопку «Добавить в корзину» новой ссылкой.
Я знаю, что это не полный ответ, но вы получите некоторую помощь от этого.
Спасибо!
Чтобы получить массив идентификаторов вариантов в продукте переменной, который вы будете использовать WC_Product
get_children()
метод.
В приведенном ниже коде вам нужно получить экземпляр объекта WC_Product продукта Variable, если вы можете получить его, используя:
global $product;
В этом случае вы будете использовать:
// Get the Variable product WC_Product object instance
$product = wc_get_product( get_the_id() );
Теперь остальной код для отображения всех необходимых скрытых полей ввода, связанных с идентификаторами вариантов:
$childern_variations_ids = $product->get_children(); // The variations IDs
// Loop through the array of Variations IDs to output related hidden fields
foreach( $childern_variations_ids as $key => $variation_id ){
// Output a hidden field for each variation ID
echo '<input type="hidden" class="variation variation-'.$key.'" name="id" value"'.$variation_id.'"/>';
}
Теперь вы получаете набор скрытых полей ввода, связанных с идентификаторами вариантов для ваших переменных продуктов.