Надеюсь, мой английский достаточно приличный, чтобы передать необходимую информацию…
Я создал функцию который проверяет, является ли продукт набором типов, и работает нормально.
К сожалению, мне нужна моя функция, чтобы различать пакеты с дополнительными элементами и пакеты без дополнительных элементов.
- -
Отредактированное обновление: я изменил свою тактику, так как для этой проверки мне не нужен JS.
Но мне все равно не хватает необходимых основ PHP.
Код: Выделить всё
add_action ( 'woocommerce_before_add_to_cart_form', 'ino_qty_main_function');
function ino_qty_main_function() {
global $product;
if ( $product->is_type('bundle') ) {
$hasqty = 5;
$bundleditems = $product->get_bundled_items();
foreach ( $bundled_items as $bundleditem ) {
if ( $bundleditem->is_optional('yes')) {
$hasqty = 1;
echo " 1 product optional ";
} else {
$hasqty = 0;
echo " 1 product not optional ";
}
}
echo " final hasqty" . $hasqty . "";
}
}
Я почти уверен, что мне не хватает базовых знаний о том, как это выполнить. проверьте.
в файлах плагинов пакета я нашел следующие вещи, которые должны помочь правильно построить эту функцию:
Код: Выделить всё
public function is_optional() {
return 'yes' === $this->optional;
}
Код: Выделить всё
private function load_data() {
// Defaults.
$defaults = array(
'quantity_min' => 1,
'quantity_max' => 1,
'quantity_default' => 1,
'priced_individually' => 'no',
'shipped_individually' => 'no',
'override_title' => 'no',
'title' => '',
'override_description' => 'no',
'description' => '',
'optional' => 'no',
'hide_thumbnail' => 'no',
'discount' => '',
'override_variations' => 'no',
'override_default_variation_attributes' => 'no',
'allowed_variations' => false,
'default_variation_attributes' => false,
'single_product_visibility' => 'visible',
'cart_visibility' => 'visible',
'order_visibility' => 'visible',
'single_product_price_visibility' => 'visible',
'cart_price_visibility' => 'visible',
'order_price_visibility' => 'visible',
'stock_status' => null,
'max_stock' => null
);
если он есть то есть $hasqty = 1 , иначе $hasqty=0.
Edit2:
Все заработало! И понял, что упустил много основ.
Код: Выделить всё
add_action ( 'woocommerce_before_add_to_cart_form', 'ino_qty_main_function');
function ino_qty_main_function() {
global $product;
if ( $product->is_type('bundle') ) {
$hasqty = 0;
$bundleditems = $product->get_bundled_items();
foreach ( $bundleditems as $bundleditem ) {
if ($bundleditem->is_optional('yes')) {
$hasqty++ ;
echo " 1 product optional ";
}
}
echo " final hasqty" . $hasqty . "";
}
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... le-bundled