Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress Plugins

Создаём систему пользовательских сообщений WordPress Messaging System, часть 3

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Creating a Custom WordPress Messaging System.
Creating a Custom WordPress Messaging System, Part 2
Creating a Custom WordPress Messaging System, Part 4

Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)

К этому моменту в данном курсе заложена основа нашего плагина, определён пользовательский hook и привязано постоянное сообщение, чтобы показать, как этот hook работает.

То, что мы не сделали, это не реализовали типы сообщений  и их отображение согласно введённым пользователем данным.

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

Готовы начать?

Я с нетерпением жду продолжения урока, но есть несколько вещей, которые нам необходимо рассмотреть перед тем, как с головой окунуться в исходный код. Убедитесь, что в вашей системе установлено следующее программное обеспечение:

  • PHP 5.6.25 и MySQL 5.6.28
  • Apache или Nginx
  • WordPress 4.6.1
  • Предпочитаемый вами IDE или редактор

И если вы ищете решение "все-в-одном", не забудьте попробовать MAMP.  

Мы продвинулись до

Как упоминалось ранее, мы находимся ровно в середине этого курса. Если вы пропустили какой-то из первых уроков, вот то, что мы рассмотрели к настоящему моменту:

  1. В первом уроке In the first tutorial,  мы сосредоточились на минимальной основе для создания нашего плагина и на том, что необходимо иметь на старте. 
  2. В второй части In the second piece, мы продвинулись с плагином дальше, немного дополнив базовую страницу администрации в WordPress.   Ещё мы назначили пользовательский hook, который  используем и провели его на стороне сервера. Также мы задали основные параметры для нашего Settings Messenger.

И вот что мы рассмотрим на заключительном этапе обучения:

  1. Мы свяжем все это вместе, посмотрим в действии и сделаем плагин публично доступным для скачивания.

В настоящее время у нас есть иные задачи, на них мы и сосредоточимся.

Вернёмся к работе

Поскольку мы обратились к работе (и, как было сказано в предыдущих уроках), мы стремимся к дальнейшей реализации задач в этой части:

В этом уроке мы продолжим развитие нашего Settings Messenger  путём добавления поддержки для успешных и ошибочных сообщений, а также затронем вопросы безопасности.

В предыдущей статье In the last article, мы начали работу в Settings Messenger,  но только до настройки функции, которая будет постоянно отображать успешное уведомление во время загрузки пользовательской страницы.

The permanent success message we displayed in the last tutorial

В этом уроке мы добавим поддержку для ошибочных, предупреждающих и успешных сообщениях. Затем выведем их на экран, чтобы  получить представление как messenger будет работать.

Кроме того, мы собираемся внести ещё одно изменение, которое добавит поддержку для отклонения уведомлений по усмотрению пользователя.

Это весь план необходимой работы на этот урок. Давайте начнем.

Расширение Settings Messenger

Помните, что вся суть Settings Messenger состоит в определении для нас своего способа работы с пользовательскими сообщениями, пользовательскими hooks и родной WordPress API для отображения сообщений в контексте WordPress панели администрации.

Для этого мы собираемся расширить работу, проделанную в прошлом уроке и начнём отсюда.

Успешные сообщения

Поскольку мы начали с успешных сообщений в предыдущем уроке, давайте с ними и продолжим.  Теперь у нас есть жестко-кодированный метод, который отображает единственный приём:

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

Во-первых, начнем с массива. Это будет частный атрибут класса, и он будет отражён в конструкции. Вступительная часть Settings_Messenger теперь будет выглядеть следующим образом:

Как видите, мы определили то, что мы сказали, но еще не определен метод для добавления собственных сообщений и метод их отображения.

Сейчас мы этим займёмся. Во-первых, давайте пропишем метод, который позволит нам добавить наши собственные сообщения:

Здесь следует отметить, что мы используем sanitize_text_field для очистки данных в массиве array. Вы можете провести полную очистку или поверхностную, как вам нравится. Я выбрал этот метод, потому как он помогает достичь результата, не отклоняясь от темы курса.

Теперь давайте определим метод, который позволит нам показывать сообщения на front-end:

Конечно, такой метод нуждается в оптимизации и я остановлюсь на этом в заключение поста.

Пока что давайте проверим. Попробуйте код tutsplus-custom-message.php , а затем обновите экран панели администратора, который мы использовали до настоящего времени.

В случае, если всё было выполнено правильно, вы должны увидеть что-то вроде этого:

Multiple success messages

К счастью, приём добавления двух следующих типов сообщений очень похож на то, что мы сделали в этом разделе.

Предупреждающие сообщения

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

 Во-первых, давайте добавим массив для наших сообщений:

Затем добавим функции, которые позволят нам добавить предупреждения для messenger:

И наконец, давайте добавим функцию для отображения функции при необходимости (обратите внимание, что мы используем класс notice-warning при создании тега div):

Обратите внимание, что выбор отображения этого конкретного набора сообщений зависит от вас. Вы можете выбрать его в сочетании с успешными сообщениями или совершенно отдельным образом.

В этом курсе я сделаю её отдельной для единовременного отображения только предупреждающего сообщения. Поэтому я пропишу следующую строку кода в файл основного плагина:

Я обновлю hook в методе init Settings_Messenger:

И тогда обновлю страницу. Предполагая, что приведённый выше код записан правильно, вы должны увидеть нечто подобное:

A demonstration of a warning message

Если нет, проверьте свой код или загрузите файл, вложенный в этот урок и мы пойдём дальше.

Сообщения об ошибках

Наконец, сделаем то же самое для наших сообщений об ошибках. Снова повторим то, что проделали в предыдущих разделах, так что это должно уже стать почти нашей второй натурой.

Во-первых нам нужно добавить атрибут, который будет содержать массив, где мы будем хранить наши сообщения об ошибках:

Во-вторых, нужно добавить функцию, которая позволит нам делать добавления в список ошибок:

И тогда нам понадобится возможность их отображать:

Чтобы оставлять свои собственные сообщения, вернитесь в файл основного плагина и добавьте следующий код:

Далее обновите функцию init в Settings_Messenger, и вы должны увидеть что-то вроде этого после обновления страницы:

A list of error messages

Вот как добавлять собственные сообщения на вашей странице администратора с помощью пользовательских hooks. Но у нас есть еще одна вещь и надо её представить перед тем, как с этой статьёй закруглиться.

Отклонённые сообщения

Прежде, чем мы завершим, я хочу показать, как мы можем сделать наши сообщения dismissible, или, проще говоря,   удалёнными пользователем. Чтобы сделать это, мы можем воспользоваться функционалом, уже встроенным в WordPress.

Поскольку мы работаем на сообщениях об ошибках, я буду их использовать в качестве примера. При построении HTML для сообщений об ошибках, добавьте еще один атрибут для тега div, содержащего сообщение(я).

То есть добавьте is-dismissible:

Совсем просто, не так ли? У вас получится иконка, при нажатии на которую сообщение исчезнет.

Приятное удобство функции для пользователей WordPress при малых затратах усилий.

Заключение

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

Но если вы читали любой из моих предыдущих уроков my previous tutorials, вы знаете, что я не фанат дублирования кода. Не фанат того, что один класс делает много вещей. Но, к сожалению, именно этим мы здесь занимаемся.

В задачу данного курса не входит переработка кода на этом примере.  Мы прошли этот материал раньше. Кроме того, наша цель - показать, как работать с пользовательскими сообщениями об ошибках, а не как применять наиболее передовые объектно-ориентированные методы (хотя было бы хорошо, не так ли?).

В зависимости от ваших отзывов, возможно, мы к этому курсу вернёмся и переделаем  его так, чтобы увидеть, как много работы ещё может быть сделано и как много принципов может быть применено.

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

До тех пор загрузите исходный код, сравните его с тем, что мы сделали и не забудьте запустить на вашем локальном компьютере для освоения того, с чем мы познакомимся в заключительной части этой серии.

Ресурсы

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.