При разработке сложных или долгосрочных проектов на WordPress часто возникает необходимость в повторном использовании одних и тех же функций в разных частях сайта или даже на нескольких сайтах. Чтобы упростить этот процесс и повысить качество кода, очень удобно создать собственную библиотеку функций — отдельный набор PHP-файлов с полезными функциями, которые можно подключать по мере необходимости.
Почему стоит создавать собственную библиотеку функций в WordPress
Стандартно в WordPress разработчики пишут кастомный код прямо в файлах темы (functions.php) или в плагинах. Это удобно для простых задач, но со временем код разрастается и становится трудно поддерживаемым. Создание отдельной библиотеки функций помогает:
- Избежать дублирования кода между проектами;
- Легко обновлять и исправлять функции в одном месте;
- Организовать код по тематикам, что улучшает читаемость и поддержку;
- Ускорить разработку новых проектов за счет готовых решений.
Например, если вы часто используете функции для работы с пользовательскими ролями, запросами WP_Query, или для форматирования данных, их стоит вынести в отдельную библиотеку.
Как организовать структуру собственной библиотеки функций
Рекомендуется организовать библиотеку так, чтобы ее было удобно расширять и поддерживать. Пример структуры:
wpzen-functions/
├── roles.php // функции для работы с ролями и правами
├── queries.php // функции для WP_Query и запросов
├── formatting.php // функции для форматирования вывода
├── helpers.php // вспомогательные функции
└── wpzen-functions.php // основной файл подключения всех функций
Основной файл wpzen-functions.php подключает все остальные, обеспечивая единый интерфейс для подключения библиотеки в проекте.
Пример создания основной библиотеки и подключения в теме
Создадим файл wpzen-functions.php:
<?php
// wpzen-functions.php
// Подключаем файлы с функциями
require_once __DIR__ . '/roles.php';
require_once __DIR__ . '/queries.php';
require_once __DIR__ . '/formatting.php';
require_once __DIR__ . '/helpers.php';
// Можно добавить инициализацию или хуки
function wpzen_functions_init() {
// Инициализация при необходимости
}
add_action('init', 'wpzen_functions_init');
Теперь в файлах темы (например, в functions.php) достаточно подключить библиотеку один раз:
require_once get_template_directory() . '/wpzen-functions/wpzen-functions.php';Этот подход позволит использовать любые функции из подключённых файлов без повторного подключения.
Пример полезной функции из библиотеки: проверка прав пользователя
В файле roles.php можно разместить функцию для проверки, имеет ли текущий пользователь определённую роль:
<?php
function wpzen_user_has_role($role) {
if (!is_user_logged_in()) {
return false;
}
$user = wp_get_current_user();
return in_array($role, (array) $user->roles);
}
Использование:
if (wpzen_user_has_role('editor')) {
echo 'Вы редактор сайта';
}Пример функции для упрощённого WP_Query с параметрами
В файле queries.php можно создать функцию, которая возвращает посты по типу и статусу с возможностью указать количество:
<?php
function wpzen_get_posts($post_type = 'post', $status = 'publish', $number = 5) {
$args = [
'post_type' => $post_type,
'post_status' => $status,
'posts_per_page' => $number
];
$query = new WP_Query($args);
return $query->have_posts() ? $query->posts : [];
}
Пример вызова и вывода заголовков:
$posts = wpzen_get_posts('product', 'publish', 10);
foreach ($posts as $post) {
echo '<p>' . esc_html($post->post_title) . '</p>';
}Подключение библиотеки в плагинах или на нескольких сайтах
Если вы разрабатываете плагин или хотите использовать библиотеку на нескольких сайтах, удобно упаковать её как отдельный плагин. Для этого создайте плагин с названием, например, WPZen Functions, и в нем подключайте файлы с функциями. После этого другие плагины или темы смогут обращаться к функциям, если плагин активен.
Это повышает модульность и упрощает сопровождение кода.
Советы по поддержке и развитию собственной библиотеки
Для удобства поддержки библиотеки функций рекомендуем:
- Использовать префиксы (например,
wpzen_) для всех функций, чтобы исключить конфликты с другими плагинами и темами. - Писать комментарии и phpDoc для каждой функции — так будет проще понять её назначение спустя время.
- Тестировать функции на чистой установке WordPress и в проекте, где они будут использоваться.
- Регулярно обновлять библиотеку, добавляя новые часто используемые функции и удаляя устаревшие.
Для быстрой разработки и расширения библиотеки можно использовать плагины, например, Clearfy Pro, который помогает оптимизировать WordPress и управлять хуками, или WPRemark для быстрого создания комментариев и отзывов — эти инструменты часто используются вместе с кастомными библиотеками.