Співбесіда на позицію WordPress розробник (загальні питання з WordPress)

20.06.2022 | Написав

У цій співбесіді питання були в загальному по 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' );

Блоки Gutenberg в ACF?

Для реєстрації блоку використовуємо функцію acf_register_block(). В параметрах вказуємо назву та путь до шаблона.

Шорткод (шоткод, shortcode, короткий код) в WordPress — это конструкция в тексте, которая будет обработана и заменена на указанный код/текст. Обрабатывается шорткод специальной PHP функцией, указанной при регистрации шорткода.

Shortcode API — это набор простых функций, которые позволяют разработчикам тем и плагинов создавать свои шорткоды, которые затем можно использовать в контенте для вывода готовых блоков контента. Например, это может быть форма контактов.

Шорткоды WordPress используют Квадратные скобки []

Для создания шорткода используется функция add_shortcode(). Она принимает два параметра: имя шорткода и название PHP функции, которая будет обрабатывать шорткод.

Вот самый простой PHP-код который регистрирует новый шорткод [foobar]:

add_shortcode( 'foobar', 'foobar_shortcode' );
 
function foobar_shortcode( $atts ){
	return 'Привет! Я шорткод.';
}

Коментарі читачів статті "Співбесіда на позицію WordPress розробник (загальні питання з WordPress)"

Немає коментарів.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься.

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.