Публикация в группе: Плагин WP-Recall - Личный кабинет на WordPress

Категории группы: Полезное

Добавлено в закладки: 2

Функционал произвольных полей плагина WP-Recall хоть и предлагает широкие возможности внутри административной части, но все-таки не раскрывается там полностью и вполне способен удивить нестандартными вариантами применения. Предлагаю рассмотреть, как мне кажется, интересную реализацию, где формирование отдельной группы произвольных полей профиля производится за пределами вкладки "Профиль".

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

Как можно поступить используя текущий функционал плагина:

  1. Создать произвольное поле профиля с нужным типом и вывести его в списке полей профиля для заполнения
  2. Создать произвольную вкладку и вывести в ней значение этого произвольного поля

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

Гораздо удобнее будет не трогать вкладку профиля, а работать только с той вкладкой, где и будет выводится контент этого поля, только для автора личного кабинета выводить там форму для заполнения, а гостю - уже заполненные автором кабинета данные!

Порядок работы будет следующим:

  1. Зарегистрировать вкладку
  2. Сформировать и вывести хозяину личного кабинета для заполнения форму
  3. Сохранять указанные хозяином личного кабинета через форму данные
  4. Сформировать и вывести гостю личного кабинета данные указанные его хозяином через форму

Регистрация вкладки

Вполне обычно регистрируем публичную вкладку личного кабинета "Подробно обо мне" через функцию rcl_tab():

Контент вкладки будет формироваться через функцию master_data_tab(), где для хозяина личного кабинета мы будем выводить форму с нужными полями для заполнения, а гостю данные с этих полей.

Указываем данные полей формы

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

Напишем сначала вспомогательную функцию, через которую можно будет получать наш список полей, она нам пригодится:

Как можно заметить, в функции get_master_form_fields() формируются данные полей профиля, которые мы и будем выводить в форме для заполнения, а гостью будем выводить сохраненные значения этих полей. Рассмотрим пример с данными трех полей различного типа.

Формируем контент произвольной вкладки

А теперь все-таки напишем функцию master_data_tab(), которая будет формировать контент вкладки:

На этом этапе в личном кабинете должна появится зарегистрированная нами вкладка, которая для хозяина личного кабинета будет выводить  форму, которая, если мы ее чуть причешем стилями:

будет выглядеть вот так:

 

Нам осталось лишь написать свой обработчик для сохранения данных с этой формы.

Сохраняем указанные данные

Так как все данные с полей формы будут сохраняться в пользовательские метаданные, то мы можем сохранить их с помощью функции плагина rcl_update_profile_fields(), ее и будем использовать. Обратим внимание, что в нашей форме присутствует скрытое поле 'action' со значением 'update_master_data', по этому значению мы и будем отлавливать отправляемые данные с формы при сохранении. Итак, внимание:

Таким нехитрым способом данные заполненные в форме будут сохраняться в метаданные хозяина текущего личного кабинета. После сохранения все значения этих полей можно будет получить через стандартную функцию get_user_meta() и применить их там где требуется. Нужно лишь верно указать значение 'meta_key поля профиля', он будет соответствовать значению 'slug' поля формы. Например, значения полей из нашей формы мы сможем получить так:

  • get_user_meta($user_id, 'user-smoke', 1);
  • get_user_meta($user_id, 'user-years', 1);
  • get_user_meta($user_id, 'user-description', 1);

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

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

Что же мы получили в результате?

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

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

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

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

3

Автор публикации

не в сети 11 часов

Андрей CS

10k

пока занят

Комментарии: 1771Публикации: 410Регистрация: 30-11--0001Продаж/Покупок: 16573/114