Как правильно оформлять функции шаблона в WordPress?

Какие специфические особенности или практики связанные с WordPress стоит знать опытному пользователю?
  • 14 января 2024 г. 12:18
Ответы на вопрос 2
Функции шаблона в 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 стоит
Есть вариант, приближенный к нормальным подходам 

условно в вашем index.php

do_action("my_content");

Пример контента для author.page (надеюсь вы понимаете, что этот код не вставляется в author.php)


сам template-parts/author.php:

<?php echo esc_html($args['title'] ?? ''); ?>

Идея нормальных подходов в том, чтобы не мешать логику и верстку. Все данныe получаете в классе, и передаете в теплейт, где уже и верстаете

Похожие вопросы