Дебаг сайта на WordPress

В этом уроке хотел бы поговорить о довольно важной теме – отладке вашего (или чужого) кода на сайте на WordPress. Пример. Как это работает, в двух словах В двух словах, как это работает. Допустим вы заходите на сайт, и всё, что у вас там открывается, это следующее: Что делать с этой ошибкой – непонятно. Или …

Подробнее

Как получить максимальное значение столбца в таблице MySQL при помощи $wpdb

Сегодня столкнулся с необходимостью использования MAX() функции SQL. А так как работая с базой данных WordPress, я использую класс $wpdb, тои функцию мне нужно было использовать при помощи этого класса. В качестве примера возьмём таблицу с переводами в плагине WPML. Сам я этот плагин не использую и вам не советую, обратите лучше внимание на Polylang, …

Подробнее

attachment_url_to_postid()

Функция позволяет получить ID изображения (не только изображения – любого вложения в WordPress) по URL файла. Возвращает целое число (ID) либо 0, если ничего не найдено. attachment_url_to_postid( $url ) Параметры $urlстрокаобязательный URL медиафайла. Примеры 1. Вывод ID медиафайла Ну начнём с самого лёгкого примера, когда мы используем функцию и выводим результат. $url = ‘https://misha.agency/images/misha-rudrastyh-digital.jpg’; echo attachment_url_to_postid( …

Подробнее

Как отдебажить $wpdb->update()

Сегодня пытался запустить SQL-запрос через $wpdb->update(), и он тупо не срабатывал. Возвращал пустоту. То есть, мы знаем, что метод $wpdb->update() возвращает 0, в случае, если ничего не было обновлено в базе данных нашим запросом, а тут именно ничего не выводилось, когда я пытался распечатать результат через print_r() (думаю по факту возвращалось false). Сегодня я работал …

Подробнее

Добавление произвольных типов постов и таксономий в REST API

Если вы не так давно начали работать с REST API, то не могли не заметить, что в официальной документации есть страница для Записей, есть для Страниц, но произвольные типы записей там не присутствуют. Та же самая тема, что есть рубрики и метки, но нет таксономий. В этом уроке мы разберёмся, как добавить маршруты REST API …

Подробнее

Использование проверки на ABSPATH для предотвращения прямого доступа к PHP-файлам

Всё началось с того, что один подписчик из комментериев попросил меня оценить сайты, которые он делал, и в момент, когда я хотел через исходный код открыть файл style.css темы, я случайно открыл папку с темой, т.е. обратился напрямую к index.php. В итоге вот что у меня открылось: Я конечно заменил в этом скриншоте и название …

Подробнее

has_blocks()

Функция позволяет проверить, есть ли блоки Gutenberg внутри контента поста или определённого строкового значения. Возвращает true или false соответственно. has_blocks( $post = null ) Функция заточена на производительность, а не на точность. То есть она не проверяет именно правильность структуры блоков. Если для вас это важно, обратите внимание на функцию parse_blocks(). Параметры $postцелое|строка|WP_Post|null Сюда можно …

Подробнее

register_meta()

Позволяет использовать метаданные с определённым ключом в WordPress REST API. Другими словами, если у вас есть произвольное поле color со значениями например #fff и #000, то вы не сможете использовать его ни при написании запросов к REST API ни в редакторе Gutenberg, например не сможете добавить поле в сайдбары. register_meta( $object_type, $meta_key, $args, $deprecated ); …

Подробнее

Пространства имён при разработке плагинов

Прежде, чем мы начнём, я бы хотел, чтобы вы проверили, какую версию PHP используете. Нам понадобится PHP 5.3 или выше. Проверили? Что же, давайте теперь поговорим о пространстве имён при работе с плагинами WordPress. Также в моём видеокурсе про разработку плагинов есть отдельный урок, посвящённый работе с классами PHP. Для чего нужны пространства имён в …

Подробнее

3 классных сайта на теме Twenty Twenty

Тема для WordPress Twenty Twenty была разработана специально для использования её вместе с редактором контента Gutenberg. И, периодически гуляя по просторам заребужного интернета, её неоднократно можно встретить на различных качественных и живых сайтах. Я обычно добавляю такие сайты в закладки браузера, но затем закладок становится слишком много, и что-то так или иначе теряется. Поэтому сейчас …

Подробнее

Какая на самом деле стоимость разработки сайта на WordPress?

Если вы загуглите фразу аля «Стоимость разработки на WordPress» или «Стоимость сайта на WordPress», первые позиции выдачи безусловно переполнят SEO-оптимизированные страницы агентств, которые стремятся к тому, чтобы вы сделали у них заказ. Но я бы хотел раскрыть этот вопрос чуть более подробно, как минимум потому что ко мне неоднократно обращаются ученики с моих курсов, спрашивая, …

Подробнее

Почему post__not_in лучше не использовать?

Параметр WP_Query post__not_in супер-полезен, как минимум с его помощью можно исключать текущий пост, когда выводите похожие посты. Однако для высоконагруженных сайтов это может привести к моментикам с производительностью, потому что использование этого параметра исключает возможность кэширования запроса. Вот допустим пример вывода последних постов на странице поста, но с исключением из цикла текущего поста: $exclude_id = …

Подробнее

delete_site_option()

Позволяет удалить определённую опцию для всей сети WordPress Мультисайт. delete_site_option( $option ) Функция возвращает true, если опция была удалена, false – в остальных случаях. Параметры $option (строка) Название опции для удаления. Очищать для SQL-использования не нужно. Пример if ( delete_site_option( ‘true_option’ ) ) { // Опция успешно true_option удалена } Кодекс WordPress: Опции: add_option(), add_settings_error(), …

Подробнее

delete_site_transient()

Позволяет удалить транзитный кэш с указанным ключом для всей сети WordPress Мультисайт. delete_site_transient( $transient ) Параметры $transient (строка) Название транзита. Очищать для SQL-использования не нужно. Пример // удаляем транзитный кэш для всей сети WordPress мультисайт delete_site_transient( ‘true_cache’ ); Хуки delete_site_transient_{$transient} Этот хук действия срабатывает сразу же при запуске функции. В качестве единственного параметра содержит название …

Подробнее

delete_metadata()

Позволяет удалить метаданные для определённой сущности в WordPress. delete_metadata( $meta_type, $object_id, $meta_key, $meta_value = », $delete_all = false ) Возвращает true – в случае успешного удаления, иначе – false. Параметры $meta_type (строка) Тип метаданных, а точнее сущность WP, у которых эти метаданные будем удалять: post – посты (записи, страницы, произвольные типы) term – таксономии user …

Подробнее