#php #wordpress #woocommerce #hook-woocommerce
#php #wordpress #woocommerce #крючок-woocommerce
Вопрос:
Я создаю пользовательский шорткод для отображения продукта на домашней странице, в котором я показываю изображение с названием, количеством и кнопкой «Добавить в корзину», для чего я использую приведенный ниже код:
add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_woocommerce_loop_add_to_cart_link', 10, 2 ); function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) { if ( $product amp;amp; $product-gt;is_type( 'simple' ) amp;amp; $product-gt;is_purchasable() amp;amp; $product-gt;is_in_stock() amp;amp; ! $product-gt;is_sold_individually() ) { $html = 'lt;form action="' . esc_url( $product-gt;add_to_cart_url() ) . '" class="cart" method="post" enctype="multipart/form-data"gt;'; $html .= woocommerce_quantity_input( array(), $product, false ); $html .= 'lt;button type="submit" class="button alt product_type_simple add_to_cart_button ajax_add_to_cart"gt;' . esc_html( $product-gt;add_to_cart_text() ) . 'lt;/buttongt;'; $html .= 'lt;/formgt;'; } return $html;
}
Каким-то образом этот код перенаправляет, поэтому я подумал, почему бы не использовать крюк, поэтому я попробовал это:
add_filter( 'woocommerce_loop_add_to_cart_link', 'quantity_inputs_for_woocommerce_loop_add_to_cart_link', 10, 2 ); function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ){ do_action('woocommerce_simple_add_to_cart'); }
Но оба не работают, он перенаправляет на страницу корзины. При нажатии на кнопку «Добавить в корзину» товары должны быть добавлены в корзину, а страница должна быть такой, какая она есть, не должна перенаправляться или обновляться.
Заранее спасибо.
Ответ №1:
Вы отключили «Перенаправление корзины» в настройках WooCommerce?
WooCommerce gt; Настройки gt;gt; Вкладка «Товары»
Шаг № 2
Ну, в случае, если это не помогло, попробуйте использовать wp_get_referer
:
add_filter( 'woocommerce_add_to_cart_redirect', 'wp_get_referer' );
В случае, если вам нужно пользовательское перенаправление, вы можете найти фильтр ниже:
add_filter( 'woocommerce_add_to_cart_redirect', 'custom_redirect_function' ); function custom_redirect_function() { return get_permalink( wc_get_page_id( 'shop' ) ); }
Комментарии:
1. Эй, Мора, это не работает, я уже пробовал это.
2. Эй, @tejal, пожалуйста, проверьте обновление
3. К сожалению, и то, и другое не работает.
4. Правильно ли я понял, что вы вставляете код в functions.php досье?
5. Да, я скопировал, вставил точный код в function.php