Что такое functions.php
Файл functions.php представляет собой обычный PHP-файл, который автоматически подключается WordPress при загрузке активной темы. По функциональности его можно сравнить с собственным мини-плагином, однако существует важное отличие:- functions.php работает только при активной теме;
- при смене темы все функции перестают работать;
- для постоянного функционала лучше использовать собственный плагин.
Где находится functions.php
/wp-content/themes/ваша-тема/functions.php
Если используется дочерняя тема, рекомендуется изменять именно ее файл:
/wp-content/themes/child-theme/functions.php
Так изменения сохранятся после обновления основной темы.
Как безопасно редактировать functions.php
- создайте резервную копию файла;
- используйте дочернюю тему;
- редактируйте через FTP или файловый менеджер хостинга;
- проверяйте код на тестовом сайте;
- не удаляйте существующий PHP-код.
Структура файла
<?php // Ваш код function my_function() { } add_action('init', 'my_function');
Закрывающий тег ?> в конце файла обычно не используется.
Подключение поддержки миниатюр
add_theme_support('post-thumbnails');
После этого появится возможность загружать изображения записи.
Регистрация меню
function my_register_menu() { register_nav_menus(array( 'primary' => 'Главное меню', 'footer' => 'Меню подвала' )); } add_action('after_setup_theme', 'my_register_menu');
Добавление собственного размера изображения
add_image_size( 'catalog', 800, 600, true );
Использование:
<?php the_post_thumbnail('catalog'); ?>
Подключение CSS
function my_styles() { wp_enqueue_style( 'main-style', get_stylesheet_uri(), array(), '1.0' ); } add_action( 'wp_enqueue_scripts', 'my_styles' );
Подключение JavaScript
function my_scripts(){ wp_enqueue_script( 'main-js', get_template_directory_uri() . '/js/main.js', array('jquery'), '1.0', true ); } add_action( 'wp_enqueue_scripts', 'my_scripts' );
Удаление версии WordPress
remove_action( 'wp_head', 'wp_generator' );
Отключение Emoji
remove_action( 'wp_head', 'print_emoji_detection_script', 7 ); remove_action( 'wp_print_styles', 'print_emoji_styles' );
Добавление области виджетов
function my_sidebar(){ register_sidebar(array( 'name' => 'Основной сайдбар', 'id' => 'sidebar-main', )); } add_action( 'widgets_init', 'my_sidebar' );
Регистрация собственного типа записи
function register_portfolio(){ register_post_type('portfolio', array( 'label' => 'Портфолио', 'public' => true, 'supports' => array( 'title', 'editor', 'thumbnail' ) )); } add_action( 'init', 'register_portfolio' );
Добавление собственного типа таксономии
register_taxonomy( 'projects', 'portfolio', array( 'label' => 'Проекты' ) );
Добавление поддержки логотипа
add_theme_support( 'custom-logo' );
Отключение Gutenberg
add_filter( 'use_block_editor_for_post', '__return_false' );
Изменение длины анонса
function my_excerpt_length(){ return 25; } add_filter( 'excerpt_length', 'my_excerpt_length' );
Изменение текста "Читать далее"
function my_excerpt_more(){ return '...'; } add_filter( 'excerpt_more', 'my_excerpt_more' );
Добавление класса в меню
function add_menu_class($classes){ $classes[]='menu-item-custom'; return $classes; } add_filter( 'nav_menu_css_class', 'add_menu_class' );
Удаление лишних размеров изображений
function remove_sizes($sizes){ unset($sizes['1536x1536']); unset($sizes['2048x2048']); return $sizes; } add_filter( 'intermediate_image_sizes_advanced', 'remove_sizes' );
Отключение масштабирования больших изображений
add_filter( 'big_image_size_threshold', '__return_false' );
Изменение качества JPEG
add_filter( 'jpeg_quality', function(){ return 82; } );
Добавление собственного класса в body
function my_body_class($classes){ $classes[]='custom-theme'; return $classes; } add_filter( 'body_class', 'my_body_class' );
Что нельзя делать в functions.php
- изменять файлы ядра WordPress;
- размещать тысячи строк кода без структуры;
- дублировать функции плагинов;
- использовать устаревшие функции;
- редактировать файл без резервной копии.
Когда лучше использовать собственный плагин
Если функциональность должна работать независимо от активной темы (например, регистрация типов записей, SEO-функции, интеграции с API, обработчики форм, WooCommerce-логика), рекомендуется создавать собственный плагин вместо размещения кода в functions.php.Полезные рекомендации
- используйте дочернюю тему;
- группируйте функции по назначению;
- добавляйте комментарии к коду;
- используйте префиксы в именах функций для предотвращения конфликтов;
- проверяйте код на наличие синтаксических ошибок;
- не храните в functions.php большие библиотеки — выносите их в отдельные файлы и подключайте через require_once.
Метки: WooCommerce


