WordPress є однією з найпопулярніших систем управління вмістом сайту, враховуючи користувацьку базу і простоту доступу.

Багато відомих веб-сайти з багатим вмістом використовують WordPress в якості програмно-адміністративної частини (back-end). Регулярні оновлення, велика спільнота, чудовий форум підтримки, рясна документація та інші чинники допомогли WordPress обігнати його конкурентів.

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

Думали ви, що WordPress може також виступати в якості повноцінного фреймворку для розробки веб-додатків?

Існує різні аспекти, на які потрібно звернути увагу перед вибором фреймворку для розробки веб-додатків. У цій статті наведено огляд функцій, які забезпечує WordPress, якщо розглядати його як фреймворк для веб-розробки.

Спільнота, підтримка та документація

WordPress володіє великим співтовариством і активним форумом підтримки. Всі питання, будь то проблеми з установкою, настроюванням, розробкою або з чимось ще, своєчасно вирішуються з допомогою спільноти технічної підтримки. WordPress Codex являє собою модерируемую співтовариством wiki-енциклопедію, яка постійно оновлюється.

Документація – це перше, що потрібно при вивченні будь-якої нової мови або фреймворку, і Кодекс WordPress якраз надає необхідну документацію по WordPress. І хоча більшість інших фреймворків також може похвалитися цими можливостями, важливо відзначити, що WordPress не відстає в цьому питанні.

Управління користувачами

У WordPress є відмінний модуль керування користувачами, який включає такий функціонал, як реєстрація і авторизація користувачів, управління ролями користувачів, призначення повноважень різним ролям і створення нових ролей.

Цей функціонал може бути розширений за допомогою плагінів, наприклад, Capability Manager, який забезпечує всі згадані вище функції, дозволяючи вам не турбуватися про управління сесією або питаннях безпеки.

Якщо говорити про інших фреймворках, то більшість з них надають деякі рішення з управління користувачами, наприклад, Yii має розширення з управління користувачами, відоме як Yii-User, і аналогічно для фреймворку CodeIgniter – ви можете знайти панель управління користувачами під назвою BackendPro, яку можна легко інтегрувати у ваш CI проект.

Адмін-панель

Хто не хотів би, щоб його програма мала просту у використанні адмін-панель, за допомогою якої можна було б управляти контентом інтерфейсу користувача? WordPress надає готову панель адміністрування, що володіє більшістю параметрів, які вам можуть знадобитися.

На додаток до цього, ви можете створити свої власні сторінки з користувацькими налаштуваннями для самого широкого набору вимог. Ще одна перевага – вам взагалі не потрібно піклуватися про моделюванні програмної частини, WordPress поставляється разом з власним набором стилів для серверної панелі.

Адмін-панель – це та частина, якої не вистачає в інших фреймворках. Symfony і Yii надають кілька розширень для відповідних фреймворків, з допомогою яких можна генерувати інтерфейс адмінки, але функціональне наповнення залишається за вами.

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

CRUD операції (створення, читання, оновлення, видалення)

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

Давайте спробуємо співвіднести це з реальним світом. Якщо говорити про WordPress, то всі об’єкти є повідомленням. Книга – це повідомлення, людина – повідомлення, і будь-який помітний об’єкт – це теж повідомлення. В WordPress вони називаються Custom Post Types.

Розглянемо приклад з об’єктом «книга» – Book. Якщо ви скажіть WordPress, що хочете визначити для вашого додатки тип повідомлення під назвою «Book», то в комплекті з ним ви автоматично отримаєте всі CRUD операції.

Add / Update Book– це вікно редагування повідомлення, створюване WordPress за замовчуванням, для додавання та оновлення книг.

View / Delete Books – це сторінка зі списком книг з опцією видалення.

add_action( ‘init’, ‘create_post_type’ );
function create_post_type() {
register_post_type( ‘book’,
array(
‘labels’ => array(
‘name’ => __( ‘Books’ ),
‘singular_name’ => __( ‘Book’ )
),
‘public’ => true,
‘has_archive’ => true,
)
);
}

Вся магія прихована всередині наведеного фрагмента коду, і CRUD операція автоматично генерується повідомлення типу book.

Вам не потрібно писати SQL запити, замість цього можна зосередитися на бізнес-логікою, що робить розробку дійсно швидкою.

Якщо говорити про інших фреймворках, то домінує Yii з його дуже простим у використанні інтерфейсом CRUD Generator, підтримуваним модулем GroceryCrud для CodeIgniter, і скаффолдинг в CakePHP.

Правда, тонка настройка CRUD операцій та відносин у базі даних залишається за вами, але при бажанні зробити швидкий старт, залишивши поліпшення на потім, таке рішення можна вважати оптимальним.

Завантаження та керування медіа контентом

Завантаження файлів і керування медіа контентом є обов’язковим для всіх сучасних фреймворків, так як в наші дні не можна уявити собі який-небудь додаток без підтримки медіа контенту – будь то зображення, музика або відео.

WordPress має вбудовану бібліотеку медіа (ці медіа файли не що інше, як типи вкладених повідомлень, як ми вже говорили вище), за допомогою якої ви можете завантажувати медіа файли і виконувати різні операції, такі як обрізка, переворот, зміна розмірів і т. д.

Функції WordPress по роботі з зображеннями дозволяють користувачам використовувати завантажені зображення в будь-якому місці користувальницького інтерфейсу із збереженням гнучкості налаштування з вашого боку.

Ви навіть можете створити галерею зображень в програмно-адміністративної частини і відобразити її в інтерфейсі.

Якщо ми відвернемося від WordPress, то побачимо, що Symfony і Yii теж забезпечують круті розширення для управління медіа контентом і завантаженням файлів, але, об’єктивно, жоден з них не так багатий, як повністю сформована система управління контентом типу WordPress.

Це врятує вас від розробки вручну і заощадить час, дозволивши вам спочатку сфокусуватися на критичних частинах бізнес-логіки.

Розширюваність і масштабованість

З точки зору розробників, розширюваність і масштабованість є дуже важливою частиною кожного фреймворка. Хуки і фільтри – ось що робить WordPress потужним фреймворком для розробки.

Фільтри

Якщо ви хочете змінити висновок деякої функції за замовчуванням, просто передайте його в ваш фільтр і виводите все, що завгодно.

Припустимо, що ви керуєте сайт-каталог (зі списком всіх типів книг з відповідною ціною) і хочете збільшити площу ціну кожної книги на 10 одиниць. Нижче наведено код фільтра, який вам потрібно буде написати:

add_filter(‘book_price’,’custom_book_price’);
function custom_book_price($book_price){
$book_price = $book_price + 10;
return $book_price;
}

Код, наведений вище, додасть 10 одиниць до ціни кожної книги, що відображається в поданні. Фільтри представлені в кожному сучасному високоякісному фреймворку та движку шаблонів.

Хуки

Хуки це не що інше, як виклики функцій у певних точках в ланцюжку виконання коду WordPress. Можна навіть уявити їх собі в якості тригерів.

Припустимо, ви хочете отримувати повідомлення по пошті, коли створюється новий запис у вашому додатку. Для цього, вам потрібно буде підключити власну функцію до publish_post – WordPress хуку за замовчуванням:

add_action(‘publish_post’,’custom_mail_admin’);

І тепер все, що вам потрібно – це реалізувати функцію custom_mail_admin, і вона буде виконуватися автоматично всякий раз, коли публікується нове повідомлення.

Хуки і фільтри разом складають потужний дует, і є однією з головних причин вдалою еволюції WordPress в фреймворк веб-розробки для дуже багатьох компаній.

Певною мірою хуки підтримуються усіма основними фреймворками, але розрізняються за часом спрацьовування.

Очевидно, що такий фреймворк, як, наприклад, Kohana, не буде мати хук «publish_post», але може мати «post-controller» хук (і має – у вигляді system.post-controller), який запускається після завершення контролером виконання його дій.

URL маршрутизація і адреси URL, дружній для SEO

Це дуже важливий параметр, якщо ви хочете створити новинний додаток або веб-сайт. Як ми всі знаємо, структура URL — адрес грає дуже істотну роль в SEO, а в WordPress є потужна функція Permalink, з допомогою якої ви можете використовувати різні типи постійних посилань для контенту або сторінок в залежності від ваших вимог.

Перезапис URL також відіграє критичну роль у складних веб-додатках, коли URL містить в собі багато GET параметрів і стає занадто довгим і складним.

Також як і багато фреймворки, WordPress надає Rewrite API, за допомогою якого ви можете пограти зі структурою URL адрес і налаштувати їх під ваші потреби, хоча за загальним визнанням, саме WordPress робить це неймовірно дружній користувачеві манері.

Майже всі фреймворки забезпечують URL маршрутизацію, серед яких Laravel надає гідний, зручний API маршрутизації, підтримуваний Yii, Zend, CakePHP та іншими.

Кешування

Якщо ви плануєте високопродуктивне додаток, що обслуговує мільйони користувачів, то вам потрібен відповідний механізм кешування. У WordPress є вбудований механізм Transient API, який забезпечує функцію кешування на рівні бази даних для застосування у вашому додатку.

Якщо ви шукаєте більш просунуті механізми кешування з повним контролем у ваших руках, тоді такі плагіни, як W3 Total Cache, задовольнять вашим бажанням. Використовуйте цей спосіб керування кешем без великих накладних витрат.

І знову, більшість фреймворків підтримують цю функцію. Прикладом можуть служити Yii і Laravel, обидва забезпечують дуже простий механізм кешування, мабуть, краще, ніж WordPress, за допомогою якого ви можете поліпшити продуктивність вашого додатка.

Шаблони

Шаблони WordPress мають справу з поданням вашого контенту. Якщо ви знайомі з архітектурою MVC, то можна віднести шаблони до уявленням. Одній сторінці може бути призначено кілька шаблонів. Тому навіть при однакових даних оформлення буде відрізнятися.

Якщо розглядати інші фреймворки, то потрібно зазначити Laravel і Phalcon, в яких є чудові вбудовані механізми шаблонів, хоча й інші фреймворки теж мають свої власні рішення.

А що щодо MVC?

Це все були основні особливості, які роблять WordPress повноцінним фреймворком для розробки веб-додатків, якщо порівнювати його з іншими системами на ринку фреймворків, але що можна сказати про MVC?

Сьогодні практично будь-який веб-фреймворк дотримується архітектури MVC.

WordPress не слідує цій архітектурі з-за цілеспрямованої підтримки зворотної сумісності з попередніми впровадженнями. Незважаючи на це, були зроблені зусилля для підтримки WordPress MVC моделі – ви можете спробувати WP MVC і Tina MVC.

Висновок

WordPress аж ніяк не є прямою заміною іншим фреймворкам, але служить пристойною альтернативою, надаючи більшість, якщо не всі функції, що входять у вже поширені фреймворки.

Єдиним приводом для хвилювання може бути його продуктивність і накладні витрати через функцій, які можливо не потрібні для конкретного додатка, але оскільки розробка функціоналу на ньому триває, WordPress насправді може змагатися з деякими кращими фреймворками, незважаючи на те, що це «всього лише» система управління контентом.

Переклад статті «WordPress as a Framework» був підготовлений дружною командою проекту Сайтостроение від А до Я.