• WordPress при переносе сайта с Open Server исчесли все настройки темы?

    gromel
    @gromel
    SEO | VDS | WP | BITRIX
    Быстрый вариант — использовать WordPress Migration Plugin.
    Plugin Duplicator
    Создаете архив.
    В папку сайта загружаете архив и файл ****_installer.php
    Открываете в браузере ссылку на файл инсталятора.
    Указываете: База-Пользователь-Пароль, от базы, которая уже на хостинге.
    Какие нюансы? Файл wp-config.php при установки переименовать/удалить. Потом вернуть и проверить данные База-Пользователь-Пароль.
    Ответ написан
    Комментировать
  • Как добавить на сайт счётчики аналитики не ухудшая скорость загрузки?

    gromel
    @gromel
    SEO | VDS | WP | BITRIX
    Использовать отложенную загрузку счетчиков по действию "scroll", "touchstart", "click".

    Пример подключения:
    Отложенная загрузка кода Яндекс.Метрики

    Использую на своих проектах.

    По одному проекте мониторил контрольный пул запросов.

    1. Внес правки (много всего, не только скрипты аналитики), показатели Google Page Speed были ~35/65 стали 100/100.
    2. В search-console гугла, в разделе "Основные интернет-показатели"/"Мобильный", отправил на перепроверку страницы с низкими показателями. Занимает 28 дней.
    3. Спустя пару месяцев с момента правок, был прирост устоявшихся позиций по гуглу — из диапазона 5-7 сдвинулись в 3-5.

    Без ленивой загрузки метрики, показатели Google Page Speed были ~92/98. Основная причина — сторонний код заблокировал основной поток.
    Ответ написан
    Комментировать
  • Как обработать итоговою стоимость заказа WooCommerce?

    gromel
    @gromel
    SEO | VDS | WP | BITRIX
    Делал клиенту три цены (розница, опт, опт2) от суммы в корзине.
    Все действия, по выводу и обработке данных, в этих файлах:
    \themes\name\woocommerce\cart\cart.php
    \themes\name\woocommerce\checkout\review-order.php
    \themes\name\woocommerce\emails\email-order-items.php
    \themes\name\woocommerce\order\order-details.php
    \themes\name\woocommerce\order\order-details-item.php
    Ответ написан
    Комментировать
  • Как дать свои классы меню wordpress включая li > a?

    gromel
    @gromel
    SEO | VDS | WP | BITRIX
    add_filter( 'nav_menu_link_attributes', 'my_nav_link_filter', 10, 4 );
    function my_nav_link_filter( $atts, $item, $args){
      $atts['class'] = 'menu--link';//для всех
      if( $args->theme_location == ('top_menu_right' || 'top_menu_left') ){//если нужно для конкретного меню
        $atts['class'] .= ' top-menu--link';
      }
      return $atts;
    }
    Ответ написан
  • Почему после обновления WooCommerce не работает wc_product_class()?

    gromel
    @gromel
    SEO | VDS | WP | BITRIX
    Да все работает как прежде.
    Причина в не обновленных шаблонах используемый темы.
    Необходимо обновить тему или, если еще у разработчика темы нет обновления, то самому вручную поправить файлы шаблонов темы, которые используют wc_product_class( ).
    Например, в файле, по пути:
    \wp-content\themes\imya-temy\woocommerce\content-product.php
    заменить
    wc_product_class( );
    на
    wc_product_class( '', $product );
    Ответ написан
    Комментировать
  • Как оптимизировать обращения к базе данных при получении вариации товара (выборе атрибута продукта)?

    gromel
    @gromel
    SEO | VDS | WP | BITRIX
    Еще есть один хитрый момент, касаемо опций на странице товара у которого больше 30 вариаций.

    Когда превышен определенный предел вариаций (30), WooCommerce просто отображает все опции, а не какие из них должны быть доступны. Поскольку динамическая загрузка большого количества данных может стать потенциальной проблемой производительности, поэтому стоит ограничение на 30 вариаций.

    Необходимо самостоятельно прописать максимальное кол-во, иначе будут глюки/сложности с данными требующие динамической обработки доступных вариаций.

    add_filter( 'woocommerce_ajax_variation_threshold', 'wc_inc_ajax_threshold_more', 10, 2 );
    function wc_inc_ajax_threshold_more($qty, $product) {
        return 150;//или больше...
    }
    Ответ написан
    1 комментарий
  • Как сделать категории всегда развернутыми?

    gromel
    @gromel
    SEO | VDS | WP | BITRIX
    1. Стандартный виджет Woo без управления выпадающего списка "открыть/закрыть". То, что у тебя на скрине — функционал темы, подключается, вернее всего, скриптом.
      Файл со скриптами темы, обычно можно найти по этому пути, имя файла может быть и другим: \themes\имя_темы\assets\js\main.js
      Если юзаешь поиск по файлам темы, то ищи что-то подобное:
      $('.widget_product_categories').addClass('toggle-menu');
      $('.toggle-menu ul.children, .toggle-menu ul.sub-menu').addClass('toggle-submenu');
      ...
      $('.widget_product_categories').each(function() {
       $(this).find('li').has('.children').has('li').prepend('<div class="open-this"></div>');
      ...

      Обрати внимание: "open-this" может быть и просто "open". Смотри какие блоки скрипт добавляет к виджету во фронтенде.

    2. Как найдешь код, то дальше дело техники. Например, так:
      $('.toggle-menu').each(function() {
        var $this = $(this);
        $this.find('.toggle-menu-current-item').last().parents('.toggle-menu-item-parent').addClass('opened').children('.toggle-submenu').show();
        $this.find('.current-cat').addClass('opened').children('.toggle-submenu').show();
        ...
       });

      Класс 'opened' для добавления своих стилей.

    3. Приправить немного юзер-френдли логикой по желанию. Например, при открытии другого списка, что бы предыдущий закрывался.
    Ответ написан
    Комментировать
  • Как сделать простейший php прелоадер кеша для сайта?

    gromel
    @gromel
    SEO | VDS | WP | BITRIX
    Я использую этот скрипт:
    https://github.com/khromov/sitemap-cache-warmer
    И варианты запуска:
    По крону, прямой запуск:
    30 0 * * * php /home/warm-cache/warm.php url=https://mysite.ru/sitemap.xml sleep=0 key=******** > /dev/null 2>&1

    Или через баш с нужной конфигурацией, последовательностью:
    #!/bin/bash
    TIME1=`date +%H:%M:%S`
    echo "текст заголовка письма — начало в: "$TIME1"" | sudo mutt -s "текст письма, начало в: "$TIME1"" *****@****
    sudo mysql -e "OPTIMIZE TABLE *******";
    строка с командой на очистку кэша;
    php /home/warm-cache/warm.php url=https://mysite.ru/sitemap.xml sleep=0 key=********
    TIME2=`date +%H:%M:%S`
    echo "текст заголовка письма — готово в: "$TIME2"" | sudo mutt -s "текст письма, готово в: "$TIME2"" *********@******

    И запуск скрипта, так же по крону.
    Ответ написан
    Комментировать