Intereting Posts
Действия в соответствии с типом и размером изображения Предупреждение: фактический загруженный контент перевода содержит смешанные текстовые области и не является чисто переводимым внутри одного текстового домена Capcha не отображается Как я могу использовать глобальную переменную в файле .css, сгенерированном с помощью php? Фильтрация сообщений по названию категории на основе slug страницы Показан значок, если старый Pagination перейти на первую страницу, если я на последнем месте Как я могу показать Cubepoints ряды / точки в ответах bbpress Как определить% категории% для пользовательских таксономий? Как взять параметры из функции и сделать их редактируемыми как атрибуты в коротком коде $ wpdb-> num_rows не работает отключить плагин на определенных страницах динамического buddypress Создание настраиваемого поля для перевода Как удалить изображения из базы данных с помощью продукта Неопределенный индекс: b в /path/file.php, относящийся к параметрам querystring

Добавить поле количества с каждым продуктом на странице магазина-wooCommerce

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

<input type="number" step="1" min="1" name="quantity" value="" title="Qty" class="input-text qty text"/> 

код в woocommerce / templates / loop / add-to-cart.php

Но его не удалось добавить количество на момент подачи. Пожалуйста, дайте мне какое-нибудь предложение. заранее спасибо

Вот как я изменил свой цикл / add-to-cart.php, чтобы добиться этого:

 <?php /** * Loop Add to Cart * * @author WooThemes * @package WooCommerce/Templates * @version 1.6.4 */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly global $product; ?> <?php if ( ! $product->is_in_stock() ) : ?> <a href="<?php echo apply_filters( 'out_of_stock_add_to_cart_url', get_permalink( $product->id ) ); ?>" class="button"><?php echo apply_filters( 'out_of_stock_add_to_cart_text', __( 'Read More', 'woocommerce' ) ); ?></a> <?php else : ?> <?php $link = array( 'url' => '', 'label' => '', 'class' => '' ); $handler = apply_filters( 'woocommerce_add_to_cart_handler', $product->product_type, $product ); switch ( $handler ) { case "variable" : $link['url'] = apply_filters( 'variable_add_to_cart_url', get_permalink( $product->id ) ); $link['label'] = apply_filters( 'variable_add_to_cart_text', __( 'Select options', 'woocommerce' ) ); break; case "grouped" : $link['url'] = apply_filters( 'grouped_add_to_cart_url', get_permalink( $product->id ) ); $link['label'] = apply_filters( 'grouped_add_to_cart_text', __( 'View options', 'woocommerce' ) ); break; case "external" : $link['url'] = apply_filters( 'external_add_to_cart_url', get_permalink( $product->id ) ); $link['label'] = apply_filters( 'external_add_to_cart_text', __( 'Read More', 'woocommerce' ) ); break; default : if ( $product->is_purchasable() ) { $link['url'] = apply_filters( 'add_to_cart_url', esc_url( $product->add_to_cart_url() ) ); $link['label'] = apply_filters( 'add_to_cart_text', __( 'Add to cart', 'woocommerce' ) ); $link['class'] = apply_filters( 'add_to_cart_class', 'add_to_cart_button' ); } else { $link['url'] = apply_filters( 'not_purchasable_url', get_permalink( $product->id ) ); $link['label'] = apply_filters( 'not_purchasable_text', __( 'Read More', 'woocommerce' ) ); } break; } if ( $product->product_type == 'simple' ) { ?> <form action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" class="cart" method="post" enctype='multipart/form-data'> <?php woocommerce_quantity_input(); ?> <button type="submit" class="button alt"><?php echo $label; ?></button> </form> <?php } else { echo apply_filters( 'woocommerce_loop_add_to_cart_link', sprintf('<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" class="%s button product_type_%s">%s</a>', esc_url( $link['url'] ), esc_attr( $product->id ), esc_attr( $product->get_sku() ), esc_attr( $link['class'] ), esc_attr( $product->product_type ), esc_html( $link['label'] ) ), $product, $link ); } ?> <?php endif; ?> 

Примечание: это справедливо только для простых продуктов.

Если вы предпочитаете делать это с помощью ajax, вы можете сделать это с помощью:

Создайте файл wp-content/themes/your-theme/templates/loop/add-to-cart.php с помощью:

 <?php /** * Custom Loop Add to Cart. * * Template with quantity and ajax. */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly. global $product; ?> <?php if ( ! $product->is_in_stock() ) : ?> <a href="<?php echo apply_filters( 'out_of_stock_add_to_cart_url', get_permalink( $product->id ) ); ?>" class="button"><?php echo apply_filters( 'out_of_stock_add_to_cart_text', __( 'Read More', 'woocommerce' ) ); ?></a> <?php else : ?> <?php $link = array( 'url' => '', 'label' => '', 'class' => '' ); switch ( $product->product_type ) { case "variable" : $link['url'] = apply_filters( 'variable_add_to_cart_url', get_permalink( $product->id ) ); $link['label'] = apply_filters( 'variable_add_to_cart_text', __( 'Select options', 'woocommerce' ) ); break; case "grouped" : $link['url'] = apply_filters( 'grouped_add_to_cart_url', get_permalink( $product->id ) ); $link['label'] = apply_filters( 'grouped_add_to_cart_text', __( 'View options', 'woocommerce' ) ); break; case "external" : $link['url'] = apply_filters( 'external_add_to_cart_url', get_permalink( $product->id ) ); $link['label'] = apply_filters( 'external_add_to_cart_text', __( 'Read More', 'woocommerce' ) ); break; default : if ( $product->is_purchasable() ) { $link['url'] = apply_filters( 'add_to_cart_url', esc_url( $product->add_to_cart_url() ) ); $link['label'] = apply_filters( 'add_to_cart_text', __( 'Add to cart', 'woocommerce' ) ); $link['class'] = apply_filters( 'add_to_cart_class', 'add_to_cart_button' ); } else { $link['url'] = apply_filters( 'not_purchasable_url', get_permalink( $product->id ) ); $link['label'] = apply_filters( 'not_purchasable_text', __( 'Read More', 'woocommerce' ) ); } break; } // If there is a simple product. if ( $product->product_type == 'simple' ) { ?> <form action="<?php echo esc_url( $product->add_to_cart_url() ); ?>" class="cart" method="post" enctype="multipart/form-data"> <?php // Displays the quantity box. woocommerce_quantity_input(); // Display the submit button. echo sprintf( '<button type="submit" data-product_id="%s" data-product_sku="%s" data-quantity="1" class="%s button product_type_simple">%s</button>', esc_attr( $product->id ), esc_attr( $product->get_sku() ), esc_attr( $link['class'] ), esc_html( $link['label'] ) ); ?> </form> <?php } else { echo apply_filters( 'woocommerce_loop_add_to_cart_link', sprintf('<a href="%s" rel="nofollow" data-product_id="%s" data-product_sku="%s" class="%s button product_type_%s">%s</a>', esc_url( $link['url'] ), esc_attr( $product->id ), esc_attr( $product->get_sku() ), esc_attr( $link['class'] ), esc_attr( $product->product_type ), esc_html( $link['label'] ) ), $product, $link ); } ?> <?php endif; ?> 

И в вашей теме паз functions.php :

 function cs_wc_loop_add_to_cart_scripts() { if ( is_shop() || is_product_category() || is_product_tag() || is_product() ) : ?> <script> jQuery(document).ready(function($) { $(document).on( 'change', '.quantity .qty', function() { $(this).parent('.quantity').next('.add_to_cart_button').attr('data-quantity', $(this).val()); }); }); </script> <?php endif; } add_action( 'wp_footer', 'cs_wc_loop_add_to_cart_scripts' ); 

Перехватите кнопку «Добавить в корзину» и замените ее на страницу, используемую на странице одного продукта.

 /** * start the customisation */ add_action('woocommerce_before_shop_loop', function() { add_filter('woocommerce_loop_add_to_cart_link', 'wpse_125946_add_to_cart', 10, 3); }); /** * customise Add to Cart link/button for product loop * @param string $button * @param object $product * @param array $link * @return string */ function wpse_125946_add_to_cart($button, $product, $link) { // not for variable, grouped or external products if (!in_array($product->product_type, array('variable', 'grouped', 'external'))) { // only if can be purchased if ($product->is_purchasable()) { // show qty +/- with button ob_start(); woocommerce_simple_add_to_cart(); $button = ob_get_clean(); } } return $button; } 

Еще лучше, сделайте это и поддержите добавленную корзину с кодом AJAX, доступным в этом контексте .