Функции шаблона в WordPress обычно оформляются в файле `functions.php`, который находится в корневой директории темы. Для начала работы с функциями шаблона вы должны соблюдать некоторые лучшие практики:
1. **Действия и фильтры (Hooks)** - Используйте хуки WordPress для модификации или добавления функционала без внесения изменений в ядро WordPress. Для действий используйте `add_action()`, а для фильтров `add_filter()`.
2. **Проверка существования функций** - Перед тем как добавить функцию, убедитесь, что функция с таким же именем не существует. Это делается с помощью `function_exists()` для предотвращения конфликтов функций.
3. **Использование дочерних тем** - Если вы модифицируете существующую тему, создайте дочернюю тему (child theme), чтобы ваши изменения не были затерты при обновлении родительской темы.
4. **Консистенция префиксов** - Используйте префиксы для именования ваших функций, чтобы избежать конфликтов с плагинами или будущими версиями WordPress.
5. **Безопасность** - Обеспечьте безопасность своих функций с помощью нонсов (nonce), проверок прав пользователя, santitization и escaping. Не забывайте про `wp_verify_nonce()`, `current_user_can()`, `sanitize_text_field()`, `esc_attr()`, `esc_html()`, `esc_url()`, и т.д.
6. **Локализация** - Добавьте возможность локализации в ваши функции (`__()`, `_e()`, `esc_html__()`, `esc_html_e()`, и др.), чтобы тексты могли быть переведены в другие языки.
7. **Оптимизация производительности** - Следите за тем, чтобы ваши функции были оптимизированы с точки зрения производительности, избегайте избыточных запросов к базе данных и используйте кэширование данных, где это возможно.
8. **Организация кода** - Организуйте код для легкости чтения и поддержки. Разделите большие количества кода на отдельные файлы или функции.
9. **Комментарии и документация** - Комментируйте ваш код и при необходимости включайте в файл `functions.php` блоки документации, чтобы другие разработчики могли легко понять, что вы делаете.
10. **Зависимости ресурсов** - При регистрации скриптов и стилей с помощью `wp_enqueue_script()` и `wp_enqueue_style()` правильно указывайте зависимости, чтобы было гарантировано, что ресурсы загружаются в нужном порядке.
11. **Использование дочерних и родительских функций** - Если вы используете дочернюю тему, помните о `parent_theme_file_path()` и `parent_theme_file_uri()` для загрузки файлов из родительской темы и `get_stylesheet_directory()` и `get_stylesheet_directory_uri()` для файлов из дочерней темы.
Вот пример простой функции в `functions.php`:
```php
if ( ! function_exists( 'my_theme_custom_function' ) ) {
function my_theme_custom_function() {
// Ваш код здесь
}
}
add_action( 'after_setup_theme', 'my_theme_custom_function' );
```
Опытному пользователю WordPress стоит