Ответы пользователя по тегу WooСommerce
  • Как убрать отображение атрибута в woocomerce?

    trampick
    @trampick
    Веб-разработчик
    Вариация товара это совокупность атрибутов и значений. Т.е. в плане php кода нет возможности скрыть, т.е. не предусмотрено, рушится структура логики вариативного товара. (Я сторонник того что написать можно что угодно и переделать, но не стоит это делать в этом случае).

    Есть некоторые хитрости , которыми можно воспользоваться в плане отображения. Если у атрибута, который нужно скрыть есть значение по умолчанию, или достаточно что бы 1 элемент был выбран, то пишем на js и css. Скрыть этот атрибут и выбрать первое значение.

    Если я не понял вопроса, уточните;)
    Ответ написан
    Комментировать
  • С помощью какого метода или запроса можно изменить количество конкретного товара на складе?

    trampick
    @trampick
    Веб-разработчик
    Кол-во определенного товара хранится в post_meta с ключом '_stock'. Обновить можно так.
    $id_product = 777;
    update_post_meta($id_product, '_stock', '10');
    Ответ написан
  • Как добавить товар в Woocommerce?

    trampick
    @trampick
    Веб-разработчик
    Можно создать сколько угодно страниц и использовать на них шорткоды.
    Шорткоды Woocommerce
    Ответ написан
    Комментировать
  • Как быстро вставить более 100к записей в Woocommerce?

    trampick
    @trampick
    Веб-разработчик
    Это изначально неправильная идея вставлять(или обновлять как в задаче сказано) каждых 6 часов более 100к товаров, да и использовать WC для такого количества товаров не разумно на каком либо железе.

    Вставить напрямую через mysql товар не так просто, есть много взаимосвязей между таблицами. Так как я понимаю у тебя тянутся товары откуда то из вне, то нет возможности у эти товаров сохранить определенные параметры и тебе нужно будет помимо вставки делать постоянные выборки. Реализовать все это можно и будет быстрее работать, но как поддерживать и где искать ошибки если что не так - не понятно. Особенно на 100к записях. Кстати, по моему опыту больше всего нагрузку дает это обработка изображений, если их правильно через wp ядро добавлять.

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

    trampick
    @trampick
    Веб-разработчик
    Возможно поможет этот плагин, либо аналогичный.
    Ответ написан
    Комментировать
  • Как получить критерий сортировки в общем цикле?

    trampick
    @trampick
    Веб-разработчик
    А теперь ВОПРОС: Как мне, когда я нахожусь в основном цикле вывода товаров или перед ним, узнать была ли сортировка по умолчанию (default) или пользователь что-то выбрал?
    - 1 вариант, посмотреть $_REQUEST. Когда используется сортировка то, там что то есть.
    - 2 вариант посмотреть global wp_query при разной сортировке, узнать что там меняется.

    Тут нужно прикинуть насколько много товаров в каждой категории и сколько категорий. Я подскажу самый легкий способ реализации через кастомные поля. Для каждой карточки товара нужно создавать кастомное поле с названием 'order_$term_id'. Т.е. в зависимости от количество рубрик в которых находится товар, будет количество таких полей. Можно написать скрипт который сам будет создавать эти поля в зависимости от количества выбранных категорий. В эти поля нужно проставлять числа позиций. К примеру у футболок будет число от 0 до 100, у шорт от 100 до 200 и т.д. Здесь не принципиально и нужно делать как нужно. Можно всем шортам проставить одно число или разное в зависимости нужно ли сортировать дополнительно внутри группы шорт.
    Получается что у всех карточек категории с id 16 будет кастомное поле order_16 с значениями внутри. Важно что бы хотя бы 0 там стоял.
    Ну и последним шагом нужно находясь в категории перехватывать запрос wp_query и изменять сортировку
    $args = array(
       'meta_key' => 'order_16',
       'orderby' => 'meta_value_num',
       'order' => 'ASC',
     );

    add_action( 'pre_get_posts', 'modify_main_query' );
    function filters_modify_main_query( $query ) {
    
    	return $query;
    }

    Делать это нужно, если конечно в $_REQUEST в ячейки сортировки нет ничего.
    Ответ написан
    2 комментария
  • Как переопределить сортировку товаров?

    trampick
    @trampick
    Веб-разработчик
    В таком ключе как у Вас нужно отлавливать момент когда пользователь находится именно в категории.
    Можно сделать через хук
    add_action( 'pre_get_posts', 'filters_modify_main_query' );
    function filters_modify_main_query( $query ) {
    	if ( strpos( '_' . $_SERVER['REQUEST_URI'], '/product-category/' ) > 0 && $query->is_main_query() ) {
               //change query
            }
    	return $query;
    }

    Ну и где change query прописать порядок по id.
    Лучше реализовать это через метаполе position в товаре и указать сортировку по метаполю. Это будет наиболее правильный вариант.
    В вашем же случае, если указывать в метаполе таксономии порядок без костылей не обойтись.
    Ответ написан
    Комментировать
  • Woocommere, как вывести товары под категорией на странице магазина?

    trampick
    @trampick
    Веб-разработчик
    Сам вопрос можно разделить на 2 части:

    - Верстка. Тут надо либо уметь самому, либо заказать у кого-то. Готового варианта Вам не предоставят.

    - Программирование этого функционала.
    У wc есть в настройках режим отображения каталога. Можно выводить подкатегории (если они есть), можно подкатегории и товар, можно только товар - возможно этого будет достаточно.
    Либо можно писать свой функционал. Вам нужно получить все категории таксономии products_cat через функцию get_terms();. Затем перебирать вся категории через foreach и формировать запросы для получения списка товара на основе wp_query. Ну и выводить список товаров.
    Ответ написан
    Комментировать
  • WooCommerce какого функционала не хватает?

    trampick
    @trampick
    Веб-разработчик
    - Почти всегда приходится добавлять кнопки плюс и минус для изменения количества в карточке и в корзине.
    - Нет автоматического пересчета при изменении кол-ва товара в корзине.
    - Как было написано - гибкой фильтрации, но тут есть свои наработки. Плюс каждый сайт индивидуален.
    - Покупки в 1 клик.
    - Иногда сталкиваюсь с разработкой интернет-магазинов для оптовиков. У woo есть плагин, что в зависимости от количества товара ставит разную цену. Но часто бывает такое, что в зависимости от роли(группы) пользователя, должна быть разная цена, причем в админке должны быть разные поля для установки цены.
    - несколько раз приходилось допиливать статистику в woo. У нас нигде не учитывается цена закупки и хотелось бы видеть что то типо чистой прибыли. К статистике еще дописываю вывод товара по частоте его заказа. Т.е. типо наиболее популярный товар.
    - уведомления по смс приходилось писать несколько раз.
    - Нормального плагина для импорта товара нету. Если товар обычный, то все ок. Но если вариативный, то приходится писать свой код. Тут у меня всегда есть момент с загрузкой миниатюр через ядро wp. Очень трудоемкий процесс и из-за этого приходится грузить минимальными порциями. На мой взгляд это очень нужный функционал. Плюс к нему сделать настройку к cron.

    Так то могу очень много чего пожелать реализовать к этому плагину:)
    Ответ написан
  • Можно ли фильтровать по брендам в WC Ajax Product Filter?

    trampick
    @trampick
    Веб-разработчик
    Не использовал плагин yith brands, но думаю что их совместить будет не так уж просто. Проще для товаров создать meta field с брендом. И настроить на него плагин WC Ajax Product Filter.
    Ответ написан
    Комментировать
  • Какой плагин лучше использовать для показа скидок?

    trampick
    @trampick
    Веб-разработчик
    Зачем плагин? у woocommerce есть встроенная функция старой и новой цены. Вам нужно лишь отредактировать 2 шаблона для карточки товара в каталоге и для одиночной карточки товара.
    Эти файлы должны находится у вас в папке с темой:
    woocommerce/loop/sale-flash.php - для каталога
    woocommerce/single-product/sale-flash.php - для одиночной карточки

    Что бы выводился %, а не просто слово скидка(по умолчанию) нужно модернизировать в таком виде скрипт:
    if (!defined('ABSPATH')) {
        exit; 
    }
    global $post, $product;
    $id = $product->id;
    if ($product->is_on_sale()) {
        $price = get_field('_price', $id);
        $regular_price = get_field('_regular_price', $id);
        ?>
        <span class="sale"><span><?php echo round(100 - ($price / $regular_price) * 100); ?>%</span></span>
        <?php
    }
    Ответ написан
  • Как вывести разное количество продуктов в разных категориях?

    trampick
    @trampick
    Веб-разработчик
    Изменить количество товаров выводимых на странице можно такой строчкой кода:
    add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 24;' ), 20 );

    по 24 товара будет выводится.
    Вам лишь надо добавить условие. Это можно сделать несколькими способами:
    -отслеживать $_SERVER['REQUEST_URI'] и по определенным урлам вместо 24 подставлять нужное значение.
    - узнавать id текущей категории. Смотреть есть ли у нее дочерние категории, то выводить одно значение, если нет то другое.
    Ответ написан
    7 комментариев
  • Как в woocommerce изменить цену продукта в зависимости от текущей даты?

    trampick
    @trampick
    Веб-разработчик
    Я делал похожую вещь. В зависимости от количества товара в корзине менял цену за единицу. Я примерно опишу что и где нужно сделать для этого.
    1. Шагом это надо создать произвольные поля для товаров с различными ценами - у Вас это вроде бы сделано. Сам я использую плагин ACF для добавления произвольных полей.
    2. Надо в functions.php создать функцию, которое будет возвращать какую цену надо выводить. Пример функцииb:
    function get_type_price(){
      $date = date('d.m.Y');
      if ($date == 'что то там') 
       return 2.
      if ($date == 'что то там') 
       return 3.
      return 1;
    }


    3. Дальше есть как минимум 2 варианта развития: простой и сложный.

    Сложный (более гибкий):
    - нужно поменять во всех шаблонах WC вывод цены. Добавить условие типа:
    if (get_type_price() == 1) //делать что то
    if (get_type_price() == 2) //делать что то
    if (get_type_price() == 3) //делать что то

    - нужно разобраться как работает class-wc-cart.php и переработать его в свою пользу:)) Суть в том что бы корзина правильно считала скидки, доставки. Что бы отправлялись письма с правильным списком товаров и т.д.
    т.е. меняя просто вывод цены в шаблоне не достаточно.

    Простой (подходит для Ваших условий)
    - по умолчанию у товара WC есть свои произвольные поля цены: _price, _regular_price и т.д.
    Нужно добавить условие типа
    if (get_type_price() == 2) {
      update_post_meta(get_the_ID(), 'price', get_post_meta(get_the_ID(), 'second_price', true));
    }
    Ответ написан
  • Где находится шаблон страницы успешной оплаты WooCommerce?

    trampick
    @trampick
    Веб-разработчик
    Здесь если не создавали шаблон для WC у себя в теме:
    wp-content/plugins/woocommerce/templates/checkout/thankyou.php
    ,Или здесь, если создавали:
    wp-content/themes/mytheme/woocommerce/checkout/thankyou.php
    Ответ написан
    Комментировать
  • Как вывести отзывы content-single-product без таба?

    trampick
    @trampick
    Веб-разработчик
    В файле \woocommerce\templates\single-product\tabs есть файл шаблона tabs.php

    Там как раз выводятся табы.
    В этом файле сначала мы получаем все табы
    $tabs = apply_filters( 'woocommerce_product_tabs', array() );

    Затем мы циклом проходим по массиву $tabs и выводим сами табы и контент в них. Контент выводится функцией
    <?php call_user_func( $tab['callback'], $key, $tab ); ?>

    Вам необходимо как раз узнать для таба отзывов значения $tab['callback'], $key, $tab. После в нужном месте шаблона content-single-product вывести
    <?php call_user_func( $tab['callback'], $key, $tab ); ?>

    с нужными параметрами.

    Второй вариант переделать шаблон tab.php под свои нужды если до этого не отключили его использование.
    Ответ написан
    Комментировать
  • Как в woocommerce при входе в личный кабинет вместо консоли открыть страницу редактирования аккаунта?

    trampick
    @trampick
    Веб-разработчик
    Например так:
    function new_dashboard_home($username, $user){
        if(array_key_exists('administrator', $user->caps)){
            wp_redirect(admin_url('admin.php, 'http'), 301);
            exit;
        }
    }
    add_action('wp_login', 'new_dashboard_home', 10, 2);

    или так:
    function loginRedirect( $redirect_to, $request, $user ){
        if( is_array( $user->roles ) ) { 
            return "/wp-admin/edit.php?post_type=page";
        }
    }
    add_filter("login_redirect", "loginRedirect", 10, 3);
    Ответ написан
  • Woocommerce: как убрать адрес доставки при самовывозе?

    trampick
    @trampick
    Веб-разработчик
    Сделайте пожалуйста скрин того что хочется убрать:)
    Ответ написан
  • Как вывести товары по меткам на стр. категории woocommerce?

    trampick
    @trampick
    Веб-разработчик
    Что значит сортировка по меткам?
    метки - это теги, а теги это грубо говоря слова. В wordpress метки это тоже самое что и категории, просто называется по другому. У одной записи(товара) может быть несколько меток. Что значит сортировка по меткам? я просто не представляю. Опишите понятнее.
    Ответ написан
  • Как настроить размер фотографий товаров?

    trampick
    @trampick
    Веб-разработчик
    Если по хорошему - сайт это не графический редактор. Приведение фоток к одному виду лучше делать через графический редактор (photoshop например). Почему? - потому что обработка фото трудоемкий процесс для сервера, стандартными способами php теряется качество фото, фото буду обрезаться по заданному алгоритму(т.е. будет вырезаться заданная область, а не которая будет лучше что бы показать товар. ) и прочее. На сайте arduino54.ru я делал все фотографии 800*800 пикселей вручную конвейерно. Фотки в любом размере карточек товара смотрятся одинаково и красиво.

    Если все таки нужно сделать это программно вам поможет комбинация следующих способов(это только для wooccomerce. если пишите свой код, то напишите коммент):
    - в админке вкладка woocommerce->настройки там надо выбрать таб "товары" и пункт "отображение". Там есть пункт "Изображения Товара" нужно поиграться с настройками. Этот пункт действует на фотки при загрузке на сервер.
    -так же есть пункт аналогичный вышеперечисленному в насйтроках-> медиафайлы "Размеры изображений"
    -Следующий момент - это вывод изображений клиенту:
    *для каталога в файле wp-content/plugins/woocommerce/includes/wc-template-function.php есть функция
    woocommerce_get_product_thumbnail ее можно переписать и указать в переменную $image_size нужный размер. Само изображение выводится функцией get_the_post_thumbnail
    * для карточки товара в файлах wp-content/plugins/woocommerce/templates/single-product/product-image.php и wp-content/plugins/woocommerce/templates/single-product/product-thumbnails.php
    в параметры функций get_the_post_thumbnail и wp_get_attachment_image соответственно надо передать необходимые параметры размера.
    Ответ написан
    Комментировать