Я пытаюсь добавить кнопку покупки сейчас в Woocommerce на странице продукта, поэтому есть две кнопки:
Я все еще хочу добавить в корзину, чтобы работать как обычно.
Как я могу это достичь? Большое спасибо.
http://wordpress.org/extend/plugins/woocommerce/
Мне удалось это решить, найдя это сообщение в блоге http://samplacette.com/skip-shopping-cart-in-woocommerce/ .
Если кто-то еще обнаружит, что они изо всех сил пытаются реализовать это, я так и сделал (это может быть не лучшее решение, но оно работает для меня):
Я скопировал следующий текст в мою тему functions.php
/** * Set cart item quantity action * * Only works for simple products (with integer IDs, no colors etc) * * @access public * @return void */ function woocommerce_set_cart_qty_action() { global $woocommerce; foreach ($_REQUEST as $key => $quantity) { // only allow integer quantities if (! is_numeric($quantity)) continue; // attempt to extract product ID from query string key $update_directive_bits = preg_split('/^set-cart-qty_/', $key); if (count($update_directive_bits) >= 2 and is_numeric($update_directive_bits[1])) { $product_id = (int) $update_directive_bits[1]; $cart_id = $woocommerce->cart->generate_cart_id($product_id); // See if this product and its options is already in the cart $cart_item_key = $woocommerce->cart->find_product_in_cart( $cart_id ); // If cart_item_key is set, the item is already in the cart if ( $cart_item_key ) { $woocommerce->cart->set_quantity($cart_item_key, $quantity); } else { // Add the product to the cart $woocommerce->cart->add_to_cart($product_id, $quantity); } } } } add_action( 'init', 'woocommerce_set_cart_qty_action' );
И затем я изменил тему /woocommerce/single-product/add-to-cart/simple.php (убедитесь, что вы не разглаживаете файлы плагинов, поэтому сделайте копию и вставьте в свои файлы тем в папку woocommerce) следующему (обратите внимание, что я удалил свой ввод количества из моего кода, поэтому, если вам это нужно, убедитесь, что вы переработали код, чтобы заставить его работать):
<form class="cart single-product" method="post" enctype='multipart/form-data'> <?php do_action( 'woocommerce_before_add_to_cart_button' ); ?> <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->id ); ?>" /> <button type="submit" class="single_add_to_cart_button button alt cart-buttton add-to-cart"><?php echo $product->single_add_to_cart_text(); ?></button> <?php do_action( 'woocommerce_after_add_to_cart_button' ); ?> </form> <form class="cart single-product" method="post" enctype='multipart/form-data' action="/checkout?set-cart-qty_<?php echo $product->id;?>=1"> <button type="submit" class="single_add_to_cart_button button alt cart-buttton buy-now">Buy Now</button> <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->id ); ?>" /> </form>
Я добавил еще одну кнопку рядом с существующей кнопкой «Добавить в корзину», но разделив форму. В сообщении в блоге упоминается, что вы можете добавить гиперссылку, но вышеупомянутое работало для меня с точки зрения того, как мне нужно было настроить страницу (немного более длинную ветру)
Из блога:
Инструкции по использованию:
Создайте гиперссылку с аргументом строки запроса следующим образом:? Set-cart-qty_ = Где численный идентификатор вашего продукта (что-то вроде «167») и количество, которое вы хотите установить в корзине пользователя (скорее всего, это будет просто «1»).
Пример URL-адреса для отправки пользователю на заказ с точно одним элементом продукта с идентификатором «167» в корзине:
Я надеюсь, что это поможет всем, у кого есть такая же проблема, как у меня.
После долгих поисков я был удивлен, что это не стандарт. Вот мое решение:
Либо используйте такой крючок, как «woocommerce_single_product_summary»
Или скопируйте wp-content / plugins / woocommerce / templates / single-product / add-to-cart / simple.php в вашу дочернюю тему, например: wp-content / themes / child-theme / woocommerce / single-product / add- к тележке / simple.php
Отредактируйте файл и добавьте следующий код, где вы хотите:
<div class="express-checkout-wrapper"> <a id="dc_express_checkout" href="/checkout/?add-to-cart=<?php echo get_the_ID(); ?>"> Purchase </a> </div>
Теперь единственная проблема заключается в том, что кнопка выведет вас на проверку и добавит правильный продукт, но без правильного количества, если вы изменили его, поэтому я использовал js в файле custom.js, который помещен в очередь в нижнем колонтитуле:
// Add and change quantity to express checkout button when the quantity is updated if($('.cart .qty').length){ var originalUrl = $('#dc_express_checkout').attr('href'); $('.cart .qty').change(function(){ var url = originalUrl + '&quantity=' + $(this).val(); $('#dc_express_checkout').attr('href', url); }); }
Вы можете изменить URL-адрес:
href="/checkout/?add-to-cart=<?php echo get_the_ID(); ?>"
чтобы:
href="/cart/?add-to-cart=<?php echo get_the_ID(); ?>"
Если вы хотите, чтобы кнопка направлялась в корзину вместо страницы проверки.