Разработка веб-приложений на WordPress: WordPress как фреймворк. 2 изд

Разработка веб-приложений на WordPress: WordPress как фреймворк. 2 изд

Разработка веб-приложений на WordPress: WordPress как фреймворк. 2 изд
Автор: Коулман Джейсон, Мессенленер Брайан
Переводчик: Райтман Михаил
Дата выхода: 2021
Издательство: БХВ-Петербург
Количество страниц: 530
Размер файла: 12.5 MB
Тип файла: PDF
Добавил: katyaprogamer
 Проверить на вирусы

Оглавление....6

Вступительное слово....16

Предисловие....18

Для кого предназначена эта книга....18

Для кого НЕ предназначена эта книга....19

Структура книги....19

О коде программ....21

Условные обозначения....21

Использование примеров программного кода....22

Благодарности....24

ГЛАВА 1. Создание веб-приложений с помощью WordPress....26

Что такое веб-сайт?....26

Что такое приложение?....26

Что такое веб-приложение?....26

Функции веб-приложения....27

Мобильные приложения....28

Прогрессивные веб-приложения....29

Зачем нужен WordPress?....30

Вы уже используете WordPress....30

С помощью WordPress легко управлять контентом....30

WordPress позволяет просто и безопасно управлять пользователями....31

Плагины....31

Гибкость важна....32

Частые обновления безопасности....32

Стоимость....33

Ответы на некоторые распространенные критические мнения о WordPress....33

Когда не следует использовать WordPress....36

Вы планируете лицензировать или продавать технологию своего сайта....36

Имеется другая платформа, которая приведет вас к цели быстрее....37

Гибкость не важна для вас....37

Ваше приложение должно работать в режиме реального времени....38

WordPress как фреймворк....38

WordPress и фреймворки Framework-View-Controller....39

Анатомия приложения WordPress....41

Что такое SchoolPress?....42

SchoolPress работает в многосайтовой сети WordPress....42

Бизнес-модель SchoolPress....42

Уровни участия и роли пользователей....43

Классы — это группы BuddyPress....43

Назначения — это СРТ....43

Представления (подтип) СРТ для назначений....44

Семестры являются таксономией для класса СРТ....44

Департаменты являются таксономией для класса СРТ....44

SchoolPress имеет один основной пользовательский плагин....44

В SchoolPress есть несколько других пользовательских плагинов....45

SchoolPress использует тему Memberlite....45

ГЛАВА 2. Основы WordPress....47

Структура каталогов WordPress....47

Корневой каталог....47

Структура базы данных WordPress....49

Таблица wp options....50

Функции в каталоге /wp-includes/option.php....50

Таблица wp_users....52

Функции в каталоге /wp-includes/....53

Таблица wp_usermeta....56

Таблица wp_posts....60

Функции в каталоге /wp-includes/post.php....61

Таблица wp_postmeta....65

Функции из каталога /wp-includes/post.php....65

Таблица wp comments....69

Функции в каталоге /wp-includes/comment.php....70

Таблица wpcommentsmeta....74

Функции из каталога /wp-includes/comment.php....74

Таблица wp_terms....76

Функции в каталоге /wp-includes/taxonomy.php....77

Таблица wptermmeta....80

Таблица wp term taxonomy....82

Функции в каталоге /wp-includes/taxonomy.php....82

Таблица wp_termrelationships....83

Хуки: события и фильтры....84

События....85

Фильтры....86

Среды разработки и хостинг....87

Работа локально....87

Выбор веб-хостинга....88

Среды разработки, интеграции и доставки....88

Расширение WordPress....89

ГЛАВА 3. Использование плагинов WordPress....90

General Public License, версия 2....91

Установка плагинов WordPress....91

Создание собственного плагина....92

Структура файла плагина приложения....93

Каталог /adminpages/....94

Каталог /classes/....95

Каталог /css/....95

Каталог /js/....96

Каталог /images/....97

Каталог /includes/....97

Каталог /includes/lib/....98

Каталог /pages/....98

Каталоги /services/ и /scheduled/....99

Файл schoolpress.php....99

Дополнения к существующим плагинам....100

Случаи из практики и примеры....100

Цикл WordPress....101

Глобальные переменные WordPress....101

Бесплатные плагины....112

Admin Columns....112

Advanced Custom Fields....112

BadgeOS....113

Posts 2 Posts....113

Members....114

W3 Total Cache....114

Yoast SEO....114

Премиальные плагины....115

Gravity Forms....115

BackupBuddy....115

WP All Import....116

Плагины сообщества....116

BuddyPress....116

ГЛАВА 4. Темы....129

Темы и плагины....129

Где разместить код при разработке приложений....129

Где разместить код при разработке плагинов....130

Где разместить код при разработке тем....130

Иерархия шаблонов....131

Шаблоны страниц....132

Образец шаблона страницы....132

Использование хуков для копирования шаблонов....135

Когда следует использовать шаблон темы?....137

Функции WordPress для работы с темами....137

Использование переменной locate template в плагинах....138

Файл style.css....140

Создание версий CSS-файлов вашей темы....141

Файл functions.php....142

Темы и СРТ....143

Популярные фреймворки для разработки тем....143

Фреймворки тем WordPress....143

Сторонние фреймворки тем....145

Создание дочерней темы для Memberlite....145

Включение Bootstrap в тему вашего приложения....146

Меню....147

Навигационные меню....148

Динамические меню....149

Адаптивный дизайн....149

Определение устройства и дисплея с помощью CSS....150

Определение устройств и их свойств в JavaScript....151

Определение устройства в РНР....154

Последнее замечание по определению браузера....158

ГЛАВА 5. Пользовательские типы записей, метаданные записей и таксономия....159

Типы сообщений по умолчанию и СРТ....159

Страница....159

Публикация....159

Вложение....159

Редакции....160

Элемент меню навигации....160

Пользовательский CSS....160

Наборы изменений....160

Кеш oEmbed....160

Пользовательские запросы....161

Повторно используемые блоки....161

Определение и регистрация СРТ....161

Функция register_post_type($post_type, $args)....162

Что такое таксономия и как ее использовать?....169

Таксономии и метаданные постов....170

Создание пользовательских таксономий....172

Функция register taxonomy(Staxonomy, Sobjecttype, $args)....172

Функция register taxonomy Jbr_object_type($taxonomy, $object_type)....175

Использование СРТ и таксономий в ваших темах и плагинах....176

Тема архива и файлы шаблона Single....176

Старый добрый класс WP Query и методов/_posts()....176

Метаданные и СРТ....180

Функция add_meta_box($id, Stitle, ^callback, $screen, Scontext, Spriority, Scallbackargs)....180

Использование метаблоков в редакторе блоков Block Editor....183

Пользовательские классы-оболочки для СРТ....184

Расширение класса WP Post в сравнении с созданием класса-обертки....187

Зачем нужны классы Wrapper?....187

Держите СРТ и таксономии вместе....187

Держите все в классе-обертке....189

Классы Wrapper читаются лучше....191

ГЛАВА 6. Пользователи, их роли и возможности....192

Получение данных пользователей....193

Добавляем, обновляем и удаляем пользователей....195

Хуки и фильтры....199

Что такое роли и возможности?....200

Проверка роли и возможностей пользователя....201

Создание собственных ролей и возможностей....203

Расширение класса WP User....205

Добавление полей регистрации и профиля....207

Настройка таблицы пользователей на административной панели....212

Плагины....214

Theme Му Login....214

Hide the Admin Bar....214

Paid Memberships Pro....214

PMPro Register Helper....215

Members....215

WP User Fields....216

ГЛАВА 7. Работа с API-интерфейсами WordPress, объектами и вспомогательными функциями....217

API шорткодов....217

Атрибуты шорткода....218

Вложенные шорткоды....219

Удаление шорткодов....220

Другие полезные функции, связанные с шорткодами....221

API виджетов....221

Прежде чем добавить свой собственный виджет....222

Добавление виджетов....222

Определение области виджета....226

Встраивание виджета вне динамической боковой панели....228

Удаление виджетов с панели инструментов....230

Добавление собственного виджета на панель инструментов....232

API настроек....235

Вам действительно нужна страница настроек?....235

Не могли бы вы использовать вместо этого хук или фильтр?....236

Учет стандартов при добавлении настроек....237

Игнорирование стандартов при добавлении настроек....238

API перезаписи....239

Добавление правил перезаписи....239

Сброс правил перезаписи....240

Другие функции перезаписи....241

Функция WP-Cron....244

Добавление своих интервалов....246

Планирование единичных событий....247

Запуск заданий Cron с сервера....247

Использование только серверного Cron....248

Функция WP Mail....249

Отправка более приятных писем с помощью WordPress....250

API заголовка файла....251

Добавление заголовков файлов в ваши собственные файлы....254

Добавление новых заголовков в плагины и темы....255

Heartbeat API....256

ГЛАВА 8. Безопасность в WordPress....261

Почему это важно....261

Основные меры безопасности....262

Регулярно выполняйте обновление....262

Не используйте имя пользователя «admin»....262

Выбирайте надежный пароль....262

Примеры плохих паролей....263

Примеры хороших паролей....263

Усиление защиты в WordPress....264

Запретите администраторам редактировать плагины и темы....264

Измените префикс таблиц базы данных....264

Переместите в другое место файл wp-config.php....265

Не отображайте сообщения об ошибках авторизации....266

Не отображайте номер версии WordPress....266

Исключите возможность авторизации через страницу wp-login.php....267

Добавьте в файл *.htaccess кастомные правила, блокирующие доступ к каталогу wp-admin....268

SSL-сертификаты и HTTPS....269

Установка SSL-сертификата на сервере....269

Авторизация и доступ к панели администратора WordPress по протоколу SSL....272

Отладка проблем с протоколом HTTPS....273

«Атомный» способ устранения ошибок протокола SSL....274

Резервируйте все!....276

Сканируйте, сканируйте и еще раз сканируйте!....276

Полезные плагин для обеспечения безопасности....277

Плагины для блокировки спама....277

Плагины для резервного копирования....277

Плагины-брандмауэры/сканеры....278

Плагины для защиты авторизации и пароля....279

Написание безопасного кода....279

Проверяйте полномочия пользователей....279

Кастомные инструкции SQL....281

Валидация, санация и экранирование данных....281

Одноразовые коды....285

ГЛАВА 9. JavaScript-фреймворки и рабочий процесс....292

Что такое ECMAScript?....293

Что такое ES6?....294

Что такое ES9?....294

Что такое ESNext?....294

Что такое Ajax?....294

Что такое JSON?....294

jQuery и WordPress....295

Подключение других JavaScript-библиотек....296

Где следует размещать кастомный JavaScript-код....297

Ajax-вызовы в WordPress с использованием jQuery....298

Управление количеством Ajax-запросов....303

Heartbeat API....305

Инициализация....305

Клиентский JavaScript-код....306

Серверный РНР-код....307

Инициализация....308

Клиентский JavaScript-код....309

Серверный РНР-код....310

Ограничения WordPress в плане асинхронной обработки....311

JavaScript-фреймворки....312

Backbone.js....312

React....313

ГЛАВА 10. REST API в WordPress....315

Что такое REST API?....315

API....315

REST....316

JSON....316

HTTP....316

Зачем нужен REST API в WordPress?....319

Использование WordPress REST API версии 2....321

Обнаружение....321

Аутентификация....321

Маршруты и конечные точки....327

Запросы....327

Ответы....329

Добавление собственных маршрутов и конечных точек....330

Функция register_rest_route($namespace, $route, $args, $override)....330

Настройка плагина WordPress Single Sign-On....331

Добавление маршрута /wp-sso/vl/check....331

Подключение к нашему плагину базовой аутентификации....333

Использование настроенной нами конечной точки для проверки учетных данных пользователя....334

Популярные плагины, использующие WordPress REST API....335

WooCommerce....336

BuddyPress....337

Paid Memberships Pro....339

ГЛАВА 11 Проект Gutenberg, блоки и кастомные типы блоков....343

Редактор системы WordPress....344

Плагин Classic Editor....345

Блоки для контента и дизайна....345

Блоки для представления функциональности....345

Создание собственных блоков....346

Пример простейшего блока....346

Использование кастомных блоков для разработки интерфейсов приложений....348

Активация редактора блоков для кастомных типов постов....348

Категории блоков....349

Блоки домашнего задания....350

Ограничение типа блоков до определенных кастомных типов постов....350

Ограничение кастомного типа постов до определенных блоков....351

Шаблоны блоков....352

Сохранение данных блока в метаданных поста....354

Советы....355

Активируйте режим отладки с помощью константы WP SCRIPT DEBUG....355

Задавайте версию скрипта с помощью функции filemtime()....356

Дополнительные советы....356

Глубже изучите JavaScript, Node.js и React....356

ГЛАВА 12. Многосайтовые сети в WordPress....358

Когда целесообразна многосайтовость?....358

Когда лучше отказаться от многосайтовости?....359

Альтернативы многосайтового режима....360

Множество авторов или категорий на одном и том же WordPress-сайте....360

Кастомные типы постов....360

Абсолютно самостоятельные сайты....361

Сервис обслуживания WordPress-сайтов....361

Мультиарендность....361

Настройка многосайтовой сети....361

Администрирование многосайтовой сети....364

Панель администратора....364

Сайты....364

Пользователи....365

Темы....366

Плагины....366

Настройки....366

Обновления....367

Структура базы данных многосайтовой сети....368

Общесетевые таблицы....368

Индивидуальные таблицы сайтов....370

Совместно используемые таблицы сайтов....371

Сопоставление доменов....371

Некоторые полезные плагины для многосайтового режима....372

Расширение User Registration для плагина Gravity Forms....373

Расширение Member Network Sites для плагина Paid Memberships Pro....373

Плагин More Privacy Options....373

Плагин Multisite Global Media....373

Плагин Multisite Plugin Manager....373

Плагин Multisite Global Search....374

Плагин Multisite Robots.txt Manager....374

Плагин NS Cloner: Site Copier....374

Плагин WP Multi Network....374

Основная функциональность многосайтовости....374

Переменная Sblogid....375

Функция is_multisite()....375

Функция get current_blog_id()....375

Функция switch to_blog($new blog)....376

Функция restore current_blog()....376

Функция get_blog_details($fields = null, Sgetall = true)....377

Функция update blog details($blog_id, Sdetails = array())....378

Функция get_blog_status($id, Spref)....379

Функция update_blog_status($blog_id, Spref $value)....379

Функция get_blog_option($id, Soption, Sdefault = false)....379

Функция update_blog_option($id, $option, Svalue)....380

Функция delete blog_option($id, Soption)....380

Функция get_blog_post($blog_id, Spostid)....380

Функция add_user_to_blog($blog_id, Suserid, Srole)....381

Функция wpmu delete user(Suser id)....381

Функция create empty blog (Sdomain, Spath, Sweblogtitle, Ssiteid = 1)....382

He упомянутые здесь функции....382

ГЛАВА 13. Локализация приложений WordPress....383

Нужна ли локализация вашему приложению?....383

Как выполняется локализация в WordPress....384

Определение локали в WordPress....384

Текстовые домены....385

Настройка текстового домена....385

Подготовка строк с помощью функций перевода....387

Функция____(Stext, $domain = "default")....388

Функция _e($text, Sdomain = "default")....388

Функция _x($text, Scontext, Sdomain =....389

Функция _ex($title, Scontext, Sdomain = "default”)....389

Сочетание перевода с экранированием....390

Создание и загрузка файлов перевода....390

Организация файлов локализации....391

Генерирование файла *.pot....391

Создание файла *.po....393

Создание файла *.mo....393

GlotPress....393

Использование GlotPress для ваших плагинов и тем в репозитории WordPress.org....394

Создание собственного сервера GlotPress....394

ГЛАВА 14. Оптимизация и масштабирование WordPress....395

Терминология....395

Источник или внешнее окружение?....397

Тестирование....397

Что следует тестировать....398

Панель отладки браузера Chrome....400

Инструмент Site Health системы WordPress....402

Apache Bench....403

Siege....410

W3 Total Cache....411

Настройки страничного кэширования....412

Минимизация....414

Кэширование базы данных....415

Объектное кэширование....415

Сети доставки контента....416

GZlP-сжатие....416

Хостинг....416

Хостинги, специально предназначенные для WordPress-сайтов....417

Развертывание собственного сервера....417

Выборочное кэширование....431

API для работы с транзиентами....432

Транзиенты в многосайтовом режиме....435

Повышение производительности с помощью JavaScript-кода....435

Кастомные таблицы....437

Действие в обход WordPress....439

ГЛАВА 15. Электронная коммерция....441

Выбор плагина....441

WooCommerce....441

Paid Memberships Pro....444

Easy Digital Downloads....445

Платежные системы....448

Торговые счета....449

Настройка модели SaaS с помощью Paid Memberships Pro....450

Модель SaaS....450

ГЛАВА 16. Мобильные приложения на платформе WordPress....465

Сценарии использования мобильных приложений....465

Нативные и гибридные мобильные приложения....466

Что такое нативное мобильное приложение?....466

Что такое гибридное мобильное приложение?....467

Почему стоит создавать гибридные приложения вместо нативных?....467

Cordova....468

Ionic Framework....472

Приложение-обертка....474

AppPresser....474

ГЛАВА 17. PHP-библиотеки, интеграция веб-сервисов и миграция с других платформ....489

РНР-библиотеки....489

Генерация и модификация изображений....490

Генерация PDF....492

Геолокация и геотаргетинг....495

Сжатие и архивация данных....497

Инструменты для разработки....501

Внешние API-интерфейсы и веб-сервисы....503

Elasticsearch....503

ElasticPress by 1 Oup....503

Google Vision....504

Google Maps....504

Google Translate....505

Twilio....505

Другие популярные API-интерфейсы....506

Миграция....507

Миграция между серверами....508

Миграция между платформами....509

Руководство по привязке данных....511

ГЛАВА 18. Взгляд в будущее....512

Оглядываясь назад....512

REST API....513

Плагины WordPress будут уделять больше внимания API-интерфейсам....513

«Обезглавленные» версии WordPress....513

GraphQL....514

Gutenberg....515

Интерфейс администратора перейдет на React/Gutenberg....515

Gutenberg будет применяться для редактирования контента на клиентской стороне WordPress....515

Шаблоны блоков заменят темы оформления....515

Блоки заменят плагины....516

Доля WordPress на рынке будет колебаться....516

WordPress станет более популярной платформой для мобильной разработки....517

WordPress будет оставаться хорошим выбором для разработки любого рода приложений....517

Об авторах....518

Предметный указатель....519

Подробно рассматривается создание веб-приложений на платформе WordPress, в том числе для мобильных устройств, принципы работы таких приложений. Описана структура каталогов и базы данных, приведены типы записей, метаданных и таксономий, перечислены основные классы и функции. Уделено внимание разработке собственной темы оформления с адаптивным дизайном. Рассказывается о типах пользователей и их ролях в архитектуре WordPress. Отдельная глава посвящена работе с API-интерфейсами, объектами и вспомогательными функциями, рассматриваются вопросы безопасности веб-приложений, принципы написания безопасного кода. Изучается REST API в WordPress, JavaScript-фреймворки, способы локализации приложений. Описаны принципы построения многосайтовых сетей, оптимизации и масштабирования. Рассматривается проект Gutenberg и его возможности.

Во втором издании авторы рассматривают новые функции и возможности актуальных версий WordPress. Все примеры кода из книги доступны на веб-сервисе GitHub.

  • Сравните WordPress с традиционными средами разработки приложений
  • Используйте темы для настройки внешнего вида и плагины для обеспечения функциональности бэкенда
  • Получите советы по выбору и созданию плагинов WordPress
  • Регистрируйте собственные типы записей (CPT) и таксономии
  • Управляйте учетными записями, ролями пользователей и доступом к данным
  • Настраивайте асинхронное поведение с помощью jQuery
  • Используйте WordPress для разработки мобильных приложений для iOS и Android
  • Интегрируйте библиотеки PHP, внешние API и плагины веб-сервисов
  • Получайте платежи с помощью плагинов eCommerce и membership
  • Узнайте, как ускорить и масштабировать приложение WordPress
  • Расширьте WordPress REST API и создайте собственные конечные точки (custom endpoints)
  • Узнайте о разработке блоков WordPress Gutenberg

Для кого эта книга

Эта книга будет наиболее полезна разработчикам WordPress, которые хотят работать над более сложными приложениями, и разработчикам PHP, имеющим некоторый опыт работы с WordPress, которые ищут фреймворк для приложений на основе PHP.

Разработчики коммерческих плагинов и тем, а также все, кто работает над крупными распределенными проектами WordPress, также сочтут полезными концепции и методы этой книги.

Мы предполагаем, что читатели имеют представление о программировании на языке PHP. Вы также должны иметь базовые знания HTML и CSS и знакомы с запросами MySQL и SQL. Базовое понимание программирования на JavaScript и jQuery поможет вам при прочтении главы 9.

Кому не предназначена эта книга

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

Эта книга не предназначена для непрограммистов. Хотя можно создавать очень функциональные веб-приложения, просто комбинируя и настраивая многие плагины, доступные для WordPress, эта книга написана для разработчиков, создающих свои собственные плагины и темы для работы с новыми веб-приложениями.

Эта книга научит вас не программированию, а скорее тому, как программировать «в стиле WordPress».


Похожее:

Список отзывов:

Нет отзывов к книге.