Переадресация WooCommerce добавить в корзину с переданным параметром запроса

#woocommerce #hook-woocommerce

#woocommerce #переадресация-woocommerce

Вопрос:

Я пытаюсь использовать woocommerce_add_to_cart_redirect для перенаправления пользователя на страницу продукта и добавления пользовательских данных запроса.

 function my_custom_add_to_cart_redirect( $url ) {
  $currentProductUrl = "";
  $redirectUrl = esc_url( add_query_arg('cart', true, $currentProductUrl ));
  return $redirectUrl;
}

add_filter( 'woocommerce_add_to_cart_redirect', __NAMESPACE__ .'\my_custom_add_to_cart_redirect' );

  

Как мне получить $currentProductUrl ??

Ответ №1:

В woocommerce_add_to_cart_redirect переадресации есть дополнительный аргумент только для обычного добавления в корзину (не для добавления в корзину Ajax), который является экземпляром объекта WC_Product .

Таким образом, вы можете получить постоянную ссылку на товар и добавить к ней свои аргументы запроса только при однократном добавлении в корзину.

 add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect', 10, 2 );
function my_custom_add_to_cart_redirect( $url, $product ) {
    if ( $product amp;amp; is_a( $product, 'WC_Product' ) ) {
        $url = esc_url( add_query_arg('cart', true, $product->get_permalink() ) );
    }
    return $url;
}
  

Для Ajax add to cart этот аргумент равен null (см. Это Здесь ).