Статьи

Создать простую CRM в WordPress: дополнительные пользовательские поля

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

Сегодня мы расскажем, как использовать Advanced Custom Fields, популярный плагин WordPress, для быстрой генерации пользовательских полей.

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

Расширенные пользовательские поля — это плагин WordPress, который предоставляет как пользовательский интерфейс, так и программные методы для создания пользовательских мета-блоков и пользовательских полей для любого типа записей.

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

  • визуальные редакторы
  • номер / диапазон
  • пароль
  • Эл. адрес
  • образ
  • Выбрать
  • флажок
  • размещать объекты
  • Карты Гугл

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

Перейдите в раздел « Плагины»> «Добавить новое» на панели инструментов WordPress. В поле поиска введите « Дополнительные настраиваемые поля» и нажмите « Плагины поиска» :

На экране результатов поиска найдите Дополнительные настраиваемые поля и нажмите Установить сейчас .

После установки активируйте плагин.

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

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

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

Нажмите на Пользовательские поля в меню администрирования WordPress:

Вы увидите экран групп полей . Думайте о группе полей как о пользовательском мета-блоке, который мы описали в части 2. Давайте создадим нашу первую группу полей, нажав кнопку « Добавить» рядом с заголовком группы полей:

Вызовите группу полей Контактная информация , а затем нажмите кнопку Добавить поле , чтобы добавить наше первое поле:

Введите следующие данные:

поле Значение
Полевая Метка Адрес электронной почты
Тип поля Эл. адрес
Необходимые? да

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

Прокрутите вниз до поля параметров. Установите для номера заказа значение 1 , для стилястандартный и установите все флажки « Скрыть на экране» , кроме параметра « Редактор содержимого» :

Нажмите « Опубликовать» , и группа полей будет сохранена.

Давайте проверим, доступно ли наше поле в нашем Типе контакта, перейдя в Контакты> Добавить новое в панели управления WordPress:

Вперед, введите имя и адрес электронной почты для своего контакта и нажмите « Опубликовать» . Вы увидите, как Advanced Custom Fields обрабатывает все поля проверки, сохранения и чтения данных пользовательских полей.

Давайте добавим еще несколько полей в нашу существующую группу полей . Отредактируйте созданную выше группу полей « Контактная информация» и добавьте следующие поля:

Телефонный номер
поле Значение
Полевая Метка Телефонный номер
Тип поля номер
Необходимые? да
Фото
поле Значение
Полевая Метка Фото
Тип поля Образ
Необходимые? нет
Тип
поле Значение
Полевая Метка Тип
Тип поля Выбрать
Необходимые? да
Выбор Проспект: проспект
Клиент: Клиент

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

Когда вы закончите, нажмите « Обновить» и начните добавлять, редактировать и управлять контактами:

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

Откройте файл плагина, который мы создали ранее, и добавьте следующее перед class WPTutsCRM { :

1
2
3
4
5
/**
* Set Advanced Custom Fields to Lite mode, so it does not appear
* in the WordPress Administration Menu
*/
define( ‘ACF_LITE’, true );

Сохраните файл плагина и перезагрузите интерфейс администрирования WordPress. Вы увидите, что пункт меню Custom Fields исчез:

Мы могли бы пойти дальше и программно определить наши пользовательские поля, вместо того чтобы полагаться на пользовательский интерфейс плагина Advanced Custom Fields для их определения.

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

  • установить плагин CRM,
  • установить дополнительные пользовательские поля
  • определить наши группы полей и настраиваемые поля

Удалите следующий код из нашего плагина, чтобы мы могли снова получить к нему доступ через администрацию WordPress:

1
2
3
4
5
/**
* Set Advanced Custom Fields to Lite mode, so it does not appear
* in the WordPress Administration Menu
*/
define( ‘ACF_LITE’, true );

В Администрировании WordPress, нажмите на Пользовательские поля , а затем выберите опцию Экспорт .

Отсюда давайте выберем группу « Контактная информация » и выберите опцию « Экспорт в PHP» :

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/**
* Register ACF Field Groups and Fields
*/
function acf_fields() {
 
    if( function_exists( «register_field_group» ) ) {
        register_field_group(array (
            ‘id’ => ‘acf_contact-details’,
            ‘title’ => ‘Contact Details’,
            ‘fields’ => array (
                array (
                    ‘key’ => ‘field_5323276db7e18’,
                    ‘label’ => ‘Email Address’,
                    ‘name’ => ’email_address’,
                    ‘type’ => ’email’,
                    ‘required’ => 1,
                    ‘default_value’ => »,
                    ‘placeholder’ => »,
                    ‘prepend’ => »,
                    ‘append’ => »,
                ),
                array (
                    ‘key’ => ‘field_53232a6cf3800’,
                    ‘label’ => ‘Phone Number’,
                    ‘name’ => ‘phone_number’,
                    ‘type’ => ‘number’,
                    ‘default_value’ => »,
                    ‘placeholder’ => »,
                    ‘prepend’ => »,
                    ‘append’ => »,
                    ‘min’ => »,
                    ‘max’ => »,
                    ‘step’ => »,
                ),
                array (
                    ‘key’ => ‘field_53232aa9f3801’,
                    ‘label’ => ‘Photo’,
                    ‘name’ => ‘photo’,
                    ‘type’ => ‘image’,
                    ‘save_format’ => ‘object’,
                    ‘preview_size’ => ‘thumbnail’,
                    ‘library’ => ‘all’,
                ),
                array (
                    ‘key’ => ‘field_53232c2ff3802’,
                    ‘label’ => ‘Type’,
                    ‘name’ => ‘type’,
                    ‘type’ => ‘select’,
                    ‘required’ => 1,
                    ‘choices’ => array (
                        ‘Prospect’ => ‘Prospect’,
                        ‘Customer’ => ‘Customer’,
                    ),
                    ‘default_value’ => »,
                    ‘allow_null’ => 0,
                    ‘multiple’ => 0,
                ),
            ),
            ‘location’ => array (
                array (
                    array (
                        ‘param’ => ‘post_type’,
                        ‘operator’ => ‘==’,
                        ‘value’ => ‘contact’,
                        ‘order_no’ => 0,
                        ‘group_no’ => 0,
                    ),
                ),
            ),
            ‘options’ => array (
                ‘position’ => ‘normal’,
                ‘layout’ => ‘default’,
                ‘hide_on_screen’ => array (
                    0 => ‘permalink’,
                    1 => ‘excerpt’,
                    2 => ‘custom_fields’,
                    3 => ‘discussion’,
                    4 => ‘comments’,
                    5 => ‘revisions’,
                    6 => ‘slug’,
                    7 => ‘author’,
                    8 => ‘format’,
                    9 => ‘featured_image’,
                    10 => ‘categories’,
                    11 => ‘tags’,
                    12 => ‘send-trackbacks’,
                ),
            ),
            ‘menu_order’ => 1,
        ));
    }
}

Затем деактивируйте плагин Advanced Custom Fields, а затем переместите папку плагина advanced-custom-fields в нашу папку tuts-crm :

Перемещая дополнительные настраиваемые поля за пределы каталога плагинов, мы должны вручную активировать его из нашего плагина. Давайте сделаем это, добавив следующий код перед class WPTutsCRM { :

1
2
include_once( ‘advanced-custom-fields/acf.php’ );
define( ‘ACF_LITE’, true );

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

1
2
3
4
5
6
7
8
9
/**
* Constructor.
*/
function __construct() {
 
    add_action( ‘init’, array( $this, ‘register_custom_post_type’ ) );
    add_action( ‘plugins_loaded’, array( $this, ‘acf_fields’ ) );
     
}

Перезагрузите панель управления WordPress и создайте и / или измените контакт. Вы увидите, что наши группы полей и пользовательские поля остаются на месте.

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

  • поля создаются, редактируются или уничтожаются
  • Расширенные пользовательские поля доступны для обновления

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

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