У багатьох темах, які я бачив (включаючи TwentyEleven), і в прикладах, які я знайшов в Інтернеті, під час створення functions.php
файлу для теми вся функціональність оголошена в глобальному масштабі. Для уточнення це виглядає як типовий файл функцій:
function my_theme_do_foo() { // ... }
function my_theme_do_bar() { // ... }
add_action( 'foo_hook', 'my_theme_do_foo' );
Мені здається, що речі можна трохи «капсулювати», якби використовувався клас:
class MyTheme {
function do_foo() { // ... }
function do_bar() { // ... }
}
$my_theme = new MyTheme();
add_action( 'foo_hook', array( &$my_theme, 'do_foo' ) );
Переваги другого підходу (в моїх скромних очах):
- Коротші назви функцій
- Доступ до змінних екземплярів (найбільша перевага IMO)
- Ніяких глобальних функцій
Недоліки:
- Ім'я класу все ще може викликати конфлікти
- Не так зрозуміло, як "налаштувати" дочірню тему (доведеться розширити батьківський клас)
- Більшість тем не зробили це так, тож ви б'єте в тренді
Я, мабуть, не помічаю деяких речей, але мені цікаво, чому б не застосувати підхід до ООП? Мені це здається трохи «чистішим», якщо що. Можливо, я помиляюся?
Я досить новачок у розробці тем WordPress, тому вибачте мене, якщо це загальновідомі відомості у спільноті WP :). Просто намагаюся дізнатися, чому все так, як вони є.