Я создаю сайт электронной коммерции. У меня возникли проблемы с WooCommerce Переменный продукт.
Кнопка «Добавить в корзину» прекрасно работает с простыми продуктами, но не работает с переменными продуктами. Это дает "Please choose product options…"
уведомление.
Я искал везде и попробовал несколько предложений онлайн, ни одно из них не работает. Поэтому я заглянул в исходный файл WooCommerce: class-wc-form-handler.php
.
В функции add_to_cart_handler_variable
:
function add_to_cart_handler_variable( $product_id ) {
$adding_to_cart = wc_get_product( $product_id );
$variation_id = empty( $_REQUEST['variation_id'] ) ? '' : absint( $_REQUEST['variation_id'] );
$quantity = empty( $_REQUEST['quantity'] ) ? 1 : wc_stock_amount( $_REQUEST['quantity'] );
$missing_attributes = array();
$variations = array();
$attributes = $adding_to_cart->get_attributes();
$variation = wc_get_product( $variation_id );
...
if ( $missing_attributes ) {
wc_add_notice( sprintf( _n( '%s is a required field', '%s are required fields', sizeof( $missing_attributes ), 'woocommerce' ), wc_format_list_of_items( $missing_attributes ) ), 'error' );
} elseif ( empty( $variation_id ) ) {
wc_add_notice( __( 'Please choose product options…', 'woocommerce' ), 'error' );
} else {
// Add to cart validation
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity, $variation_id, $variations );
if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variations ) !== false ) {
wc_add_to_cart_message( $product_id );
return true;
}
}
return false;
}
Ошибка поймана в предложении elseif.
Поэтому я попытался повторить $variation_id
, $variations
, а также $variation
, Ни у кого из них нет ничего, потому что, когда я повторяю $variation_id
: ничего не выводится.
Какие-либо предложения?
На странице магазина вы не можете использовать кнопку добавления в корзину для переменных продуктов, потому что вам нужно сначала перейти на одну страницу продукта, чтобы выбрать параметры для этого переменного продукта, прежде чем добавить его в корзину.
На страницах с изменяемым товаром обычно отображаются некоторые варианты на выбор для переменного продукта, перед использованием кнопки «добавить в корзину». Если вы этого не сделаете, вы получите сообщение об ошибке …
Итак, на данный момент:
Если эта проблема связана с вашей темой, свяжитесь с автором вашей темы и откройте тему поддержки или тикет …
ВЫПУСК ИЗМЕНЕНИЯ ПРОДУКТА ДЛЯ ИДЕНТИФИКАТОРА ПРОДУКТА:
Чтобы программно получить варианты продукта для переменного идентификатора продукта:
$product = wc_get_product( $product_id );
$product_variations = $product->get_available_variations();
echo var_dump($product_variations); // Displaying the array
Затем, чтобы получить первый вариант ID:
$product = wc_get_product( $product_id );
$product_variations = $product->get_available_variations();
$variation_product_id = $product_variations [0]['variation_id'];
echo $variation_product_id; // Displaying the variation ID
Или получить массив всех вариантов идентификатора этого продукта:
$product = wc_get_product( $product_id );
$product_variations = $product->get_available_variations();
$arr_variations_id = array();
foreach ($product_variations as $variation) {
$product_variation_id = $variation['variation_id'];
array_push( $arr_variations_id, $product_variation_id );
}
echo var_dump($arr_variations_id); // Displaying the array of variations ID
Ссылка : Измените кнопку «Добавить в корзину» на «Перейти к продукту» на странице магазина
Я создаю сайт электронной коммерции. У меня возникли проблемы с WooCommerce Переменный продукт.
Кнопка «Добавить в корзину» прекрасно работает с простыми продуктами, но не работает с переменными продуктами. Это дает "Please choose product options…"
уведомление.
Я искал везде и попробовал несколько предложений онлайн, ни одно из них не работает. Поэтому я заглянул в исходный файл WooCommerce: class-wc-form-handler.php
.
В функции add_to_cart_handler_variable
:
function add_to_cart_handler_variable( $product_id ) {
$adding_to_cart = wc_get_product( $product_id );
$variation_id = empty( $_REQUEST['variation_id'] ) ? '' : absint( $_REQUEST['variation_id'] );
$quantity = empty( $_REQUEST['quantity'] ) ? 1 : wc_stock_amount( $_REQUEST['quantity'] );
$missing_attributes = array();
$variations = array();
$attributes = $adding_to_cart->get_attributes();
$variation = wc_get_product( $variation_id );
...
if ( $missing_attributes ) {
wc_add_notice( sprintf( _n( '%s is a required field', '%s are required fields', sizeof( $missing_attributes ), 'woocommerce' ), wc_format_list_of_items( $missing_attributes ) ), 'error' );
} elseif ( empty( $variation_id ) ) {
wc_add_notice( __( 'Please choose product options…', 'woocommerce' ), 'error' );
} else {
// Add to cart validation
$passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity, $variation_id, $variations );
if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variations ) !== false ) {
wc_add_to_cart_message( $product_id );
return true;
}
}
return false;
}
Ошибка поймана в предложении elseif.
Поэтому я попытался повторить $variation_id
, $variations
, а также $variation
, Ни у кого из них нет ничего, потому что, когда я повторяю $variation_id
: ничего не выводится.
Какие-либо предложения?
На странице магазина вы не можете использовать кнопку добавления в корзину для переменных продуктов, потому что вам нужно сначала перейти на одну страницу продукта, чтобы выбрать параметры для этого переменного продукта, прежде чем добавить его в корзину.
На страницах с изменяемым товаром обычно отображаются некоторые варианты на выбор для переменного продукта, перед использованием кнопки «добавить в корзину». Если вы этого не сделаете, вы получите сообщение об ошибке …
Итак, на данный момент:
Если эта проблема связана с вашей темой, свяжитесь с автором вашей темы и откройте тему поддержки или тикет …
ВЫПУСК ИЗМЕНЕНИЯ ПРОДУКТА ДЛЯ ИДЕНТИФИКАТОРА ПРОДУКТА:
Чтобы программно получить варианты продукта для переменного идентификатора продукта:
$product = wc_get_product( $product_id );
$product_variations = $product->get_available_variations();
echo var_dump($product_variations); // Displaying the array
Затем, чтобы получить первый вариант ID:
$product = wc_get_product( $product_id );
$product_variations = $product->get_available_variations();
$variation_product_id = $product_variations [0]['variation_id'];
echo $variation_product_id; // Displaying the variation ID
Или получить массив всех вариантов идентификатора этого продукта:
$product = wc_get_product( $product_id );
$product_variations = $product->get_available_variations();
$arr_variations_id = array();
foreach ($product_variations as $variation) {
$product_variation_id = $variation['variation_id'];
array_push( $arr_variations_id, $product_variation_id );
}
echo var_dump($arr_variations_id); // Displaying the array of variations ID
Ссылка : Измените кнопку «Добавить в корзину» на «Перейти к продукту» на странице магазина