Співбесіда на позицію WordPress розробник (загальні питання з WordPress)
У цій співбесіді питання були в загальному по WordPress та кілька питань з PHP та JavaScript.
1. Підключення стилей:
Правильно добавляет файл CSS стилей wp_enqueue_style(). Регистрирует файл стилей, если он еще не был зарегистрирован.
Если файл стилей был предварительно зарегистрирован через wp_register_style(), то его можно добавить в очередь, указав название (идентификатор) в первом параметре $handle.
Если файл не был предварительно зарегистрирован, то эта функция зарегистрирует файл и добавит его в очередь.
Добавленный в очередь файл стилей выводится в
части документа.1. Підключення скриптів:
Правильно подключает скрипт на страницу wp_enqueue_script().
Использовать эту функцию для подключения js файлов важно, потому что так вы в дальнейшем сможете без лишних проблем объединять JS файлы в один. Также в некоторых случаях избавитесь от конфликтов скриптов, когда зависимый скрипт подключается до основного (того от которого он зависит).
Функция добавляет скрипт, только если он еще не был добавлен и другие скрипты от которых он зависит, зарегистрированы. Зависимые скрипты добавляются автоматически.
style.css – Файл стилей темы (обязательный)
index.php – Любая страница без файла шаблона (обязательный)
front-page.php – Главная страница
home.php – Страница Постов (или Главная страница)
functions.php – Специальный файл для php функций (кода)
404.php – Страница “не найдено”
comments.php – Шаблон Комментариев (подключаемый)
header.php – Шаблон Шапки сайта (подключаемый)
searchform.php – Шаблон формы Поиска (подключаемый)
sidebar.php – Шаблон Боковой панели (подключаемый)
footer.php – Шаблон Подвала сайта (подключаемый)
single.php – Запись (пост)
single-POST_TYPE.php – Запись типа POST_TYPE
single-POST_TYPE-POST_NAME.php – Запись POST_NAME типа POST_TYPE
singular.php – Запись любого типа
page.php – Постоянная Страница
page-POST_NAME.php – Страница с Именем POST_NAME
page-ID.php – Страница с ID
attachment.php – Страница Вложения
image.php – Страница Вложения-картинки
archive.php – Страница любого Архива
archive-POST_TYPE.php – Страница Архива типа записи
search.php – Страница Поиска
category.php – Страница Рубрики
category-SLUG.php – Страница Рубрики со слагом
category-ID.php – Страница Рубрики с id
tag.php – Страница Метки
tag-SLUG.php – Страница Метки со слагом
tag-ID.php – Страница Метки с id
taxonomy.php – Страница любого Термина
taxonomy-TAXONOMY.php – Страница Термина таксономии TAXONOMY
taxonomy-TAXONOMY-SLUG.php – Страница Термина SLUG таксономии TAXONOMY
author.php – Страница постов Автора
Глобальные переменные — это обычные переменные, которые определены в глобальной области (основной части) PHP.
Чтобы получить доступ к глобальной переменной перед ней нужно указать ключевое слово global.
Или можно использовать супер-глобальный массив $GLOBALS
Таксономии делятся на два типа:
- Древовидные – например рубрики (категории)
- Линейные (плоские) – например метки (теги)
Отличия. Элементы древовидных такс. могут быть родительскими и дочерними, т.е. одни элементы как бы вложены в другие. А элементы плоских такс. всегда сами по себе, т.е. все они находятся на одном уровне, а значит не зависят друг от друга.
Из коробки в WordPress существует пять основных типов контента (типов данных, сущностей):
1. Записи:
- Посты
- Страницы
- Произвольные типы записей – register_post_type()
- Вложения (медиа данные)
- Ревизии
- Элементы навигационного меню
2. Комментарии
3. Таксономии (термины):
- Категории
- Метки
- Произвольные таксономии – register_taxonomy()
4. Пользователи
5. Метаданные (могут быть у всех перечисленных выше сущностей.)
По умолчанию в WordPress 6 ролей:
Super Admin – Cупер-администратор. Имеет права для управления сетью сайтов. Эта роль появляется только при мультисайт установке.
administrator – Aдминистратор сайта (отдельного сайта в сети мультисайт).
editor – Редактор. Имеет доступ ко всем постам, страницам, комментариям, категориям, тегам и ссылкам.
author – Автор. Может писать, загружать фотографии, редактировать и публиковать свои посты.
contributor – Участник. Может писать посты, которые затем публикует редактор или админ.
subscriber – Подписчик. Не может ничего, кроме редактирования профиля.
Есть два типа хуков:
Фильтр (filter) – изменяет значение переменной — получает значение и возвращает его (изменённое или нет).
Событие (action) – Запускает произвольный код — колбэк функция прикрепленный к хуку сработает в момент срабатывания хука в коде.
Работают функции совершенно одинаково. Разница заключается только в логике работы. Фильтры перехватывают события выполняют какие либо действия и возвращают его назад. События же работаю также, только выполняют определенное действие но ни чего не возвращают. В двух словах, действия запускают какой-нибудь код, а фильтры — изменяют переменные.
add_action( 'save_post', 'notify_administrator', 10, 3 ); function notify_administrator( $post_id, WP_Post $post, $update ) { // Really important code here ... wp_mail( $admin_email, $subject, $message ); } add_filter( 'post_class', 'modify_post_classes', 10, 3 ); function modify_post_classes( $classes, $class, $post_id ) { if ( in_array( get_post_type( $post_id ), [ 'review', 'service' ] ) ) { $classes[] = 'dark-theme'; } return $classes; } |
Возможные варианты построения циклов вывода записей:
Стандартный цикл и цикл на основе query_posts(). Когда использовать query_posts()? Когда нужно немного изменить основной (базовый) запрос WordPress. В идеале: для исключения рубрики/метки (например, на главной странице), изменение направления сортировки, ограничения количества выводимых постов, исключения определенных постов из категории/метки и т.п.
Дополнительный цикл на основе WP_Query(). Особенность циклов на WP_Query() в том, что мы создаем новый объект $query, который никак не связан с аналогичным глобальным объектом $wp_query и поэтому мы никак не нарушаем структуру текущей страницы.
Дополнительный цикл на основе get_posts(). Самый удобный вариант выводить нужные записи в нужном порядке — это выводить их с помощью get_posts(). get_posts() чаще всего подходит лучше под вашу задачу, например: нужно вывести 10 последних постов в сайдбаре. нужно вывести 10 случайных записей в подвале. нужно вывести все картинки прикрепленные к посту. нужно вывести записи с определенным произвольным полем.
В корне темы создаёте папку woocommerce и в неё копируете только нужные шаблоны из папки templates плагина, сохраняя структуру подпапок. Там шаблоны можно править, изменения останутся после обновления тем и плагинов.
Также добавьте в functions.php своей темы поддержку WooCommerce:
function woocommerce_support() { add_theme_support( 'woocommerce' ); } add_action( 'after_setup_theme', 'woocommerce_support' ); |
Для реєстрації блоку використовуємо функцію acf_register_block(). В параметрах вказуємо назву та путь до шаблона.
Шорткод (шоткод, shortcode, короткий код) в WordPress — это конструкция в тексте, которая будет обработана и заменена на указанный код/текст. Обрабатывается шорткод специальной PHP функцией, указанной при регистрации шорткода.
Shortcode API — это набор простых функций, которые позволяют разработчикам тем и плагинов создавать свои шорткоды, которые затем можно использовать в контенте для вывода готовых блоков контента. Например, это может быть форма контактов.
Шорткоды WordPress используют Квадратные скобки []
Для создания шорткода используется функция add_shortcode(). Она принимает два параметра: имя шорткода и название PHP функции, которая будет обрабатывать шорткод.
Вот самый простой PHP-код который регистрирует новый шорткод [foobar]:
add_shortcode( 'foobar', 'foobar_shortcode' ); function foobar_shortcode( $atts ){ return 'Привет! Я шорткод.'; } |
Немає коментарів.