Помощь Добавить дополнительную кнопку «В корзину» Woocommerce?

kastembay

Славянин
Регистрация
3 Янв 2013
Сообщения
205
Реакции
124
Привет всем. Немного задумался над решением.
Казалось бы, тем избитая, но ситуация немного не такая.

Нужно добавить еще одну кнопку, которая будет редиректить на главную, при этом добавляя выбранный товар в корзину. Через хук сделана переадресация на Кнопку оформить заказ.

Есть дополнительные поля (скрытые) реализованные с помощью WooCommerce TM Extra Product Options, которые попадают в заказ.
Когда добавляю через ссылку типа такой /?add_to_cart=61, то не попадают дополнительные поля в заказ и корзину.
Пробовал через другие хуки, но поведение остается как на обычной кнопке.
Уже второй день гуглю и бьюсь не могу решить данный вопрос.
 

Avalones

Постоялец
Регистрация
10 Июл 2018
Сообщения
278
Реакции
157
Заходишь в консоли "Woocommerce - Настройки - Товары - Отображение". Там есть пункт - Добавить в поведение корзины "Перенаправить в корзину после успешного добавления"
Ставишь галку там.
А дальше в functions.php вставляешь код:
PHP:
add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_product_link' );
function custom_product_link( $link ) {
global $product;
    echo '<a href="'.esc_url( $product->get_permalink( $product->id )).'" class="button product_type_simple add_to_cart_button">Подробнее</a>';
}
В твоем случае "class=" меняешь на тот что у тебя стоит на кнопке
"href=" ставишь ту же главную например (сейчас ведет на страничку товара)
 

kastembay

Славянин
Регистрация
3 Янв 2013
Сообщения
205
Реакции
124
Заходишь в консоли "Woocommerce - Настройки - Товары - Отображение". Там есть пункт - Добавить в поведение корзины "Перенаправить в корзину после успешного добавления"
Ставишь галку там.
А дальше в functions.php вставляешь код:
PHP:
add_filter( 'woocommerce_loop_add_to_cart_link', 'custom_product_link' );
function custom_product_link( $link ) {
global $product;
    echo '<a href="'.esc_url( $product->get_permalink( $product->id )).'" class="button product_type_simple add_to_cart_button">Подробнее</a>';
}
В твоем случае "class=" меняешь на тот что у тебя стоит на кнопке
"href=" ставишь ту же главную например (сейчас ведет на страничку товара)
Я знаю такой подход с этой кнопкой, все равно допполя у меня не падают в корзину и заказ. Благодарю за сообщение. Копаю дальше.
 

Avalones

Постоялец
Регистрация
10 Июл 2018
Сообщения
278
Реакции
157
Как это может быть, если это 1 в 1 тоже самое добавление в корзину, просто вместо анимации добавления в корзину просто перенаправляет на главную? Может проблема в плагине?
 
  • Нравится
Реакции: GiT

kastembay

Славянин
Регистрация
3 Янв 2013
Сообщения
205
Реакции
124
Как это может быть, если это 1 в 1 тоже самое добавление в корзину, просто вместо анимации добавления в корзину просто перенаправляет на главную? Может проблема в плагине?
Так у меня нет допплагинов, только сам woocommerce. Все делаю кодом.
Сейчас подошел к такому решению. Сделал скрытое поле возле кнопок. Кнопки нужны только в карточке товара.
в functions.php добавил такой код
Код:
add_action( 'woocommerce_add_to_cart', 'check_custom_input', 10, 6 );
function check_custom_input($cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data)
{
   $custom = $cart_item_data['tmpost_data']['custom_value'];

   $cart_items = WC()->cart->get_cart();

   foreach ($cart_items as $cart_item ){
      if( $cart_item['data']->id == $item_special )
      {
         if($custom === '555'){
            if ( wp_redirect(get_home_url())) {
               exit;
            }
         } else {
            if (wp_redirect( wc_get_checkout_url() )) {
               exit;
            }
         }

      }
   }

}

Добавляет в корзину, самый прикол в том, что редирект не работает))) Капец, я уже торможу
 

kastembay

Славянин
Регистрация
3 Янв 2013
Сообщения
205
Реакции
124
Кажется есть плагин добавляющий дополнительные поля и редирект тоже делает поищи Advansed custom feelds
Благодарю за помощь, но решил именно таким способом. Ковырялся не в том action.

Парням благодарность за помощь!

PHP:
add_filter( 'woocommerce_add_to_cart_redirect', 'stamp_skip_cart' );

function stamp_skip_cart( $redirect ) {

    $cart_items = WC()->cart->get_cart();

    foreach ($cart_items as $cart_item ) {
        if ($cart_item['tmpost_data']['custom_value'] == 555){
            return get_home_url();
        }
        else{
            return wc_get_checkout_url();

        }
    }
}
 
Сверху