Ответы пользователя по тегу WooСommerce
  • Как сделать бесплатную доставку для всех товаров в корзине, если она будет хотя бы у одного из товаров?

    NikMaster777
    @NikMaster777
    Вот что говорит ИИ на этот счёт:

    Для реализации бесплатной доставки для всех товаров в корзине, если она есть хотя бы у одного товара, вам потребуется настроить соответствующие правила доставки в WooCommerce. Вот как это можно сделать:

    1. В административной панели WooCommerce перейдите в раздел "Настройки" и выберите вкладку "Доставка".

    2. Создайте новый метод доставки, который будет представлять бесплатную доставку. Для этого нажмите на кнопку "Добавить способ доставки".

    3. В разделе "Настройки способа доставки" выберите "Бесплатная доставка" из выпадающего списка.

    4. Перейдите во вкладку "Условия" и настройте правила для применения бесплатной доставки. Для этого выберите "Добавить условие" и установите следующие параметры:

    Поле: "Общая стоимость товаров"
    Оператор: "Больше или равно"
    Значение: "0" (или любую другую сумму, если вы хотите установить минимальную стоимость для бесплатной доставки)
    Сохраните изменения.

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

    Обратите внимание, что реализация бесплатной доставки может варьироваться в зависимости от выбранной вами темы или установленных плагинов. Предоставленные инструкции основаны на стандартных функциях WooCommerce.
    Ответ написан
  • Как добавить Название товара для отправки сообщения в бот телеграмм woocommerce?

    NikMaster777
    @NikMaster777 Автор вопроса
    Нашёл решение, может пригодится кому:

    add_action( 'woocommerce_new_order', 'new_order_send_tg',  1, 1  );
    function new_order_send_tg( $order_id ) {
        $order = new WC_Order( $order_id );
        $order_data = $order->get_data();
    
        $products_post_title_in_cart = array();
        foreach(WC()->cart->get_cart() as $cart_item) {
        	$products_post_title_in_cart[] = $cart_item['data']->post->post_title;
        }	
    
        $product_name = implode("\n", $products_post_title_in_cart);
        $order_billing_first_name = $order_data['billing']['first_name'];
        $msg = '*Магазин myshop.ru*';
        $msg .= ' Новый заказ: '.$order_id;
        $msg .= ' Имя: '.$order_billing_first_name;
        $msg .= '*Название товара:* '."\n".$product_name;
    
        $userId = '*********'; // Ваш id в телеграм
        $token = '*************************************'; // Token бота
     
        file_get_contents('https://api.telegram.org/bot'. $token .'/sendMessage?chat_id='. $userId .'&text=' . urlencode($msg) . '&parse_mode=markdown'); // Отправляем сообщение
    }
    Ответ написан
    Комментировать
  • Как скрыть подкатегории woocommerce?

    NikMaster777
    @NikMaster777 Автор вопроса
    Нашел решение.
    По умолчанию страница магазина использует файл шаблона archive-product.php. Добавляем для этой страницы свой собственный шаблон например shop.php:
    add_filter( 'woocommerce_template_loader_files','add_shop_template_loader_files', 10, 1 );
    
    function add_shop_template_loader_files($default_file){
    
        if( is_shop()){
            $default_file[] = WC()->template_path() .'shop.php';
        }
    
        return $default_file;
    
    }


    Код соответственно ставим в functions.php.
    Осталось поместить файл shop.php в папку woocommerce вашей темы. Если такой папки нет, то нужно её создать.
    Ответ написан
    Комментировать
  • Как сделать разные шаблоны для категорий woocommerce?

    NikMaster777
    @NikMaster777 Автор вопроса
    Всем спасибо. Решил задачу. Решение: вставляем код в functions.php и в каждой категории появится дополнительное описание, которое и будет выводится внизу страницы категории.
    add_action( 'product_cat_edit_form_fields', 'wpm_taxonomy_edit_meta_field', 10, 2 );
    function wpm_taxonomy_edit_meta_field($term) {
    $t_id = $term->term_id;
    $term_meta = get_option( "taxonomy_$t_id" );
    $content = $term_meta['custom_term_meta'] ? wp_kses_post( $term_meta['custom_term_meta'] ) : '';
    $settings = array( 'textarea_name' => 'term_meta[custom_term_meta]' );
    ?>
    <tr class="form-field">
    <th scope="row" valign="top"><label for="term_meta[custom_term_meta]">Дополнительное описание</label></th>
    <td>
    <?php wp_editor( $content, 'product_cat_details', $settings ); ?>
    </td>
    </tr>
    <?php
    }
    add_action( 'edited_product_cat', 'save_taxonomy_custom_meta', 10, 2 );
    add_action( 'create_product_cat', 'save_taxonomy_custom_meta', 10, 2 );
    function save_taxonomy_custom_meta( $term_id ) {
      if ( isset( $_POST['term_meta'] ) ) {
        $t_id = $term_id;
        $term_meta = get_option( "taxonomy_$t_id" );
        $cat_keys = array_keys( $_POST['term_meta'] );
        foreach ( $cat_keys as $key ) {
          if ( isset ( $_POST['term_meta'][$key] ) ) {
            $term_meta[$key] = wp_kses_post( stripslashes($_POST['term_meta'][$key]) );
          }
        }
        update_option( "taxonomy_$t_id", $term_meta );
      }
    }
    add_action( 'woocommerce_after_shop_loop', 'wpm_product_cat_archive_add_meta' );
    function wpm_product_cat_archive_add_meta() {
      $t_id = get_queried_object()->term_id;
      $term_meta = get_option( "taxonomy_$t_id" );
      $term_meta_content = $term_meta['custom_term_meta'];
      if ( $term_meta_content != '' ) {
        if ( is_tax( array( 'product_cat', 'product_tag' ) ) && 0 === absint( get_query_var( 'paged' ) ) ) {
          echo '<div class="woo-sc-box normal rounded full">';
          echo apply_filters( 'the_content', $term_meta_content );
          echo '</div>';
        }
      }
    }
    Ответ написан
    Комментировать
  • Как удалить товар из корзины woocommerce автоматически?

    NikMaster777
    @NikMaster777 Автор вопроса
    1) Пустая корзина перед добавлением в корзину (если корзина не пуста) сбросит всю корзину:

    add_filter( 'woocommerce_add_to_cart_validation', 'one_cart_item_at_the_time', 10, 3 );
    function one_cart_item_at_the_time( $passed, $product_id, $quantity ) {
        if( ! WC()->cart->is_empty())
            WC()->cart->empty_cart();
        return $passed;
    }


    2) Этот код проверит только добавляемый товар, остальные товары если есть в корзине удалены не будут:

    add_filter('woocommerce_add_to_cart_validation', 'one_cart_item_at_the_time', 10, 3);
    
    function one_cart_item_at_the_time( $passed, $product_id, $quantity ) {
        if(! WC()->cart->is_empty()) {
            $cartId = WC()->cart->generate_cart_id($product_id);
            $cartItemKey = WC()->cart->find_product_in_cart($cartId);
            if ($cartItemKey) {
              return $passed;
            } else {
              $woocommerce->cart->add_to_cart( $product_id );
              return $passed;
            }
        }
    }
    Ответ написан
    Комментировать