Коли ти переходиш від встановлення готових тем до власної розробки, настає момент, коли потрібно глибше зрозуміти архітектуру WordPress. І якщо файл style.css відповідає за зовнішній вигляд та ідентифікацію теми, то functions.php — це її мозок. Саме тут починається справжня логіка, елементи back-end розробки і робота з PHP.

У цій статті я поясню, що таке functions.php, як він працює, які завдання виконує та як правильно його використовувати при створенні тем WordPress.

Що таке functions.php і як він працює

Файл functions.php автоматично підключається WordPress при активації теми. На відміну від плагінів, його код працює тільки тоді, коли активна конкретна тема. Це важливо розуміти під час створення тем WordPress, адже вся логіка, яку ти сюди додаси, буде частиною саме цієї теми.

По суті, це місце для:

  • підключення стилів і скриптів;
  • реєстрації меню та сайдбарів;
  • додавання підтримки мініатюр;
  • створення власних функцій;
  • роботи з хуками.

Файл functions.php — це не просто набір функцій. Це точка входу в глибшу взаємодію з ядром WordPress через хуки Wordpress — механізм, який дозволяє змінювати або розширювати поведінку системи без редагування її ядра.

Базова структура functions.php

Мінімальний файл може виглядати так:

<?php
// Prevent direct access
if (!defined('ABSPATH')) {
	exit;
}

Цей простий захист не дозволяє звертатися до файлу напряму через браузер. У Back-end розробка це базова гігієна безпеки.

Підключення стилів і скриптів

Одна з перших задач — правильне підключення CSS і JavaScript. Ніколи не вставляй їх напряму в header.php. Для цього існує спеціальний хук.

add_action('wp_enqueue_scripts', 'mytheme_enqueue_assets');
function mytheme_enqueue_assets()
{
	wp_enqueue_style('mytheme-style', get_stylesheet_uri());
	wp_enqueue_script('mytheme-script', get_template_directory_uri() . '/js/main.js', array(), null, true);
}

Тут ми використовуємо один із найважливіших хуків Wordpress — wp_enqueue_scripts. Саме так правильно інтегрується CSS та JavaScript у тему.

Додавання підтримки можливостей теми

WordPress дозволяє темі оголосити, які функції вона підтримує. Наприклад:

add_action('after_setup_theme', 'mytheme_setup');
function mytheme_setup()
{
	add_theme_support('title-tag');
	add_theme_support('post-thumbnails');
	add_theme_support('custom-logo');
	register_nav_menus(array('primary' => __('Primary Menu', 'mytheme')));
}

Хук after_setup_theme запускається після ініціалізації теми. Саме тут зазвичай реєструють меню, мініатюри та інші можливості.

Робота з сайдбарами та віджетами

Щоб додати область віджетів, використовуємо ще один приклад роботи з хуками Wordpress:

add_action('widgets_init', 'mytheme_widgets_init');
function mytheme_widgets_init()
{
	register_sidebar([
			'name'          => __('Sidebar', 'mytheme'),
			'id'            => 'sidebar-1',
			'before_widget' => '<div class="widget">',
			'after_widget'  => '</div>',
		]
	);
}

Тепер у панелі адміністратора з’явиться новий сайдбар, куди можна додавати віджети.

Створення власних функцій

functions.php — чудове місце для допоміжних функцій. Наприклад, можна створити функцію для обрізання тексту:

add_filter('excerpt_length', 'mytheme_excerpt_length');
function mytheme_excerpt_length($length)
{
	return 20;
}

Тут використовується вже не action, а filter — ще один тип хуків Wordpress. Якщо action запускає подію, то filter змінює дані перед виводом.

Action і Filter — серце логіки

Щоб ти краще зрозумів/ла різницю:

  • add_action() — виконує код у певний момент.
  • add_filter() — змінює значення перед його використанням.

У створенні тем WordPress це ключова концепція. Без розуміння хуків ти не зможеш гнучко керувати поведінкою сайту.

Організація коду в реальному проєкті

У невеликих темах можна залишити все в одному файлі. Але якщо ти серйозно займаєшся back-end розробкою, рекомендую розділяти логіку:

  • /inc/enqueue.php
  • /inc/theme-setup.php
  • /inc/widgets.php

А в functions.php просто підключати ці файли через require_once. Це робить код чистішим і зрозумілішим.

Типові помилки

  • Підключення скриптів без wp_enqueue.
  • Редагування ядра WordPress замість використання хуків.
  • Відсутність перевірки на існування функцій.
  • Перевантаження одного файлу сотнями рядків коду.

Пам’ятай: functions.php — це частина логіки теми, а не заміна плагінів. Якщо функціонал не прив’язаний до дизайну — краще винести його в окремий плагін.

Підсумок

Файл functions.php — це центр керування твоєї теми. Саме тут відбувається інтеграція з ядром через хуки Wordpress, реалізується PHP-логіка і формується фундамент створення тем WordPress.

Якщо ти хочеш рости у back-end розробці, почни з глибокого розуміння цього файлу. Розберися з action, filter і структурою коду — і WordPress перестане бути «чорною скринькою» 🙂

Не бійся експериментувати, але завжди думай про структуру та чистоту коду. Це окупиться в кожному наступному проєкті 🚀