Posted inКак сделать, Сниппеты, ЧаВО

async & defer в WordPress — ускоряем загрузку JavaScript

async & defer — это очень полезные механики, которые позволяют существенно ускорить загрузку страниц и их отрисовку для посетителей. Однако они относительно новые в мире JavaScript. И потому в мире WordPress еще существует много скриптов которые не используют их. Но это легко решается через wp_script_add_data.

Posted inВопросы, Как сделать, Кейсы, Сниппеты

robots.txt для WordPress — рабочий пример файла

Провел SEO-аудит сайта при помощи labrika.ru. Оказалось что много технических ошибок. Пришлось колдовать с файлом robots txt. Готового плагина для этих целей у меня нет. Потому пришлось решать вопрос программно.

Posted inКак сделать, Сниппеты

Протокол REST API JSON в WordPress

Чуть более года назад в WordPress появился родной REST JSON API, разработанный с учетом лучших практик обмена данными и создания AJAX запросов. В основном это нужно для AJAX и ускорения работы сайта, но еще это круто работает для интеграций и обмена данными с другими системами. Кривые AJAX-запросы Большинство программистов в WordPress превратно понимают суть и…

Posted inСниппеты

Автоматический сброс кеша на стили (CSS), скрипты и картинки

Частая проблема в разработке это сброс кеша после изменение стилей, скриптов, картинок. Вы изменили что-то, у вас на компьютере это выглядит по новому, а кто-то другой заходит, а у него старые версии файлов, все новшества ломаются. Начинаются удивления, шок, паника 🙂 Существует множество подходов к решению этих проблем в WordPress. Вчера наткнулся на один достаточно […]

Posted inКак сделать, Сниппеты

Журналы (Logs) данных и ошибок в WooCommerce

Начиная с версии 2.7 в WooCommerce внедрили новый метод логирования данных и ошибок. Это удобно для отслеживания процессов в системе и диагностики проблем. Использование Идем в консоль сайта, далее раздел WooCommerce / Статус. Далее вкладка Журналы (Log). Выбираем нужный журнал. Например если это какой-то плагин, то обычно журнал будет начинаться с названия этого плагина. Либо […]

Posted inКак сделать, Сниппеты

Отключаем сообщение «JQMIGRATE: Migrate is installed, version 1.4.1»

В WordPress по умолчанию активирован плагин jQuery.Migrate. Это нужно для совместимости со старыми компонентами. Но в 80% случаев в нем нет смысла. Зато он пишет в консоль свое сообщение и доставляет страдания внутреннему перфекционисту. Лечится это простым сниппетом, который можно добавить в functions.php нашей темы:

Posted inКак сделать, Кейсы, Сниппеты

Смена структуры URL на сайте без потери трафика из поиска (SEO)

Попался сайт, на котором были ужасные URL с русскими символами что негативно сказывалось как на удобстве использования сайта, так и на SEO. Исходная ситуация Сайт типа Интернет-магазин запчастей на базе WordPress & WooCommerce Все ссылки без конвертации в латиницу Ужасно смотрится когда просто передаешь ссылку по почте или через сообщения Плохо влияет на SEO Задача […]

Posted inКак сделать, Кейсы, Сниппеты

Отладка кода через бэктрейс — debug_backtrace()

Возникла ситуация, при которой метод get_term вызывался 20 000 раз. Причем даже на чистой установке WP. Базовая причина была ясна — у нас было 60 постов на странице и у каждого поста около 1000 категорий. Что конечно не очень правильно, но имели то что имели. Как выяснить почему get_term() вызывается 20 000 раз? Просто поиском […]

Posted inДругое, Как сделать, Сниппеты

3 подхода к программированию классов в WordPress

В WordPress можно встретить множество стилей программирования. Это огромный мир, который вмещает в себя разные стили и подходы. Но если изучать ядро и качественные плагины, то можно обнаружить 3 базовых подхода к программированию классов. Классический класс 🙂 Это наиболее частый и понятный метод. Используется метод __construct() для создания экземпляра класса. Но он же наиболее проблемный из-за […]

Posted inКак сделать, Сниппеты

Вывод типа поста Продукт в топ поиска на Сайте

Возникла задача выводить вверх поиска продукты из WooCommerce. Чтобы они были выше чем посты в блоге. Проблема — часто заходишь на сайт, чтобы найти какой-то продукт в каталоге. Но поиск постоянно сверху выдавал посты из блога с похожими словами. А хочется чтобы Продукты были сверху. Нашел такое решение:

Posted inСниппеты

Сниппет для быстрой настройки заданий по расписанию — wp_cron

При решении задач автоматизации процессов на сайте часто бывает нужно настроить wp_cron. До сих пор каждый раз вставлял функции wp_cron внутрь соответствующих классов. Но надоело 🙂 Думаю это лучше делать как подключаемый класс в форме сниппета. Скопировал, сделал класс типа class-cron.php, поменял префикс My на свой, где нужно чуть чуть поменял параметры и вперед.

Posted inКак сделать, Плагины, Сниппеты

Как изменить ссылку логотипа на странице входа WordPress? (wp login)

Иногда бывает нужно изменить ссылку у логотипа на странице входа WordPress. По умолчанию она ведет на официальный сайт WordPress. Эту задачу можно решить плагинами стилизации или кодом (программно). Плагины раз два Без плагина Можно добавить в файл дочерней темы functions.php

Posted inКак сделать, Сниппеты

Автоматическая генерация логина пользователя при регистрации

Иногда нужно сделать регистрацию на сайте только по email. Без указания логина. Для этого пригодится сниппет функции которая возвращает логин на основе последнего id в базе пользователей.

Posted inСниппеты

Создание эндпоинта и хак сброса пермалинков

В последнее время все чаще сталкиваюсь с задачами где нужно применять ендпоинты в WordPress. Например через ендпоинты собран раздел личного кабинета WooCommerce (My Account). Все подразделы личного кабинета — это ендпоинты. Хотя выглядит как подстраницы. Также часто нужны корневые эндпоинты например для AJAX и каких-то frontend-обработок. Либо для построения тех же личных кабинетов, когда создание […]

Posted inКак сделать, Сниппеты

Как добавить CSS классы ко всем пунктам меню?

Меню в WordPress делается через функцию wp_nav_menu(). Иногда нужно не трогая чужой код, изменить набор классов используя свою механику. Для этого можно использовать хук nav_menu_css_class, мы можем добавить свои CSS классы, если соблюдается нужное нам условие. Добавим CSS класс, если это пост и название элемента меню равно «blog»:

Posted inКак сделать, Сниппеты

Универсальные методы подключения файлов компонентов для тем и плагинов

В мире WP есть различные методы для получения путей к файлам без хардкода. Это важно, тк папки зависят от опций и могут меняться. Если путь к какому-либо файлу «захардкожен» — мы можем получить разные неожиданные ошибки. А далее каждый раз встает вопрос, каким методом можно получить путь до файла? Скажем это js, css или какая-то картинка… […]

Posted inСниппеты

Как получить путь до файла в ядре WordPress?

Бывает нужно получить прямой доступ к файлам ядра WordPress. Для этих целей есть метод get_home_path() Но он часто вызывает ошибку: PHP Fatal error: Call to undefined function get_home_path() Решением может быть такой метод: $path = wp_normalize_path(ABSPATH . ‘/wp-blog-header.php’) Таким методом мы получаем всегда верный путь до файлов ядра. Даже с учетом типичных проблем: установки WordPress в […]

Posted inСниппеты

Получаем и обрабатываем данные в формате JSON

Часто при интеграции сайтов на WordPress, нужно получать данные из других систем посредством RESTfull интерфейса в формате JSON. Простейший пример — получить курс валют от https://openexchangerates.org/ При регистрации дается URL, который возвращает данные о текущем курсе валют. Соответственно если нам нужно обработать эти данные к примеру для конвертации валют в магазине, то нам нужно как […]

Posted inСниппеты

Добавить скрипт/стиль в плагин/тему WordPress

Просто добавление скриптов или стилей в шапку или подвал сайта — это плохо. Могут быть конфликты с другими компонентами где есть аналогичные скрипты. Важно добавлять их через очередь, которая контролирует добавление скриптов на страниц и исключает конфликты. https://gist.github.com/uptimizt/7b128f6678a32ade9063

Posted inСниппеты

Как вывести рекламу после определенного абзаца в посте или на странице

Размещение рекламы в самом эффективном месте поста или страницы является нетривиальной задачей. Как показывает практика, самая эффективная реклама, которую замечают, по которой кликают — реклама, размещенная внутри контента. Расположить ее внутри поста можно, воспользовавшись шорткодом, однако этот ручной метод требует постоянного контроля — нужно, как минимум, вставить шорткод в содержимое поста или страницы. Для того, […]

Posted inСниппеты

Контрастный шрифт с тенями для пестрого фона

Часто бывает нужно разместить текст на фоне пестрой картинки. При этом читаемость текста может сильно ухудшиться. Для этого пригодится CSS-стиль который делает контраст цвета и добавляет тень. Для темного фона: Для светлого фона: Конкретные цвета можно и иногда нужно менять под цвет фона.

Posted inСниппеты

Как изменить заголовок (title) страницы в WordPress 4.4?

При обновлении WordPress до 4.4. сломался механизм изменения заголовков. Оказалось что в новой версии логика изменения title изменилась. Пришлось переписать плагин: https://github.com/systemo-biz/add-id-in-title-wp/blob/master/add-id-in-title.php Пример нового сниппета для измения заголовока: [code] // Для новой версии WP 4.4.+ function document_title_parts_cb_s($title){ if(is_single() and $id = get_queried_object_id()){ $title[] = ‘#’ . $id; } return $title; } add_filter( ‘document_title_parts’, ‘document_title_parts_cb_s’ ); [/code]

Posted inСниппеты

Очищаем номер телефона от лишних символов с помощью PHP

Возникла задача прочистить номера телефонов, которые были во многом забиты со словами и буквами. Так чтобы остались только числа. Нашел такой вариант решения: $str = ‘телефон 8 (9123) 123123’; $int = filter_var($str, FILTER_SANITIZE_NUMBER_INT);

Posted inСниппеты

Поиск, обработка и замена текста между тегами на PHP

Сегодня возникла задача обработки уведомлений по шаблону с ключевыми словами. К примеру «Здравствуйте [[name]]!». Где name нужно заменить на имя пользователя в письме. Нашел статью… Сегодня я постараюсь объяснить как найти, обработать и заменить текст между тегами используя PHP функции. На первый взгляд простая задача, тем более в PHP есть специально предназначенные для этого функции, […]

Posted inСниппеты

Скрытый журнал ошибок в WordPress (WP_DEBUG)

Бывает нужно включить логи WordPress, чтобы понять что происходит с сайтом. Определить проблемы и причины ошибок. Для этого есть переменная WP_DEBUG в файле wp-config.php. Беда в том что если просто ее включить, то ошибки полезут на экран и это создаст проблему в работе сайта. Зачастую нужно включить журна ошибок, но при этом оставить сайт в рабочем […]

Posted inКак сделать, Сниппеты

При обрезании текста выводятся кракозябры и знак вопроса

Часто встречается проблема при которой на сайте выводятся знаки вопроса или разные символы кракозяб при обрезании текста. Это происходит при использовании функции substr. Причина в том что эта функция нормально работает только с латиницей на англоязычных сайтах. Русский язык более требовательный и работает как правило в кодировке UTF-8. Для того чтобы решить эту проблему, нужно […]