Статьи

Создание простого CRM в WordPress: создание пользовательского типа записи

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

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

Хотя бесплатные и платные плагины WordPress CRM существуют (например, WP-CRM ) и сторонние службы CRM (такие как Salesforce или Highrise), они либо слишком сложны, чтобы начать их использовать быстро, либо имеют функции, которые могут не подходить для наших конкретных рабочий процесс.

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

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

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

Во-первых, при локальной установке WordPress создайте каталог в wp-content/plugins именем tuts-crm . Отсюда мы начнем добавлять наш исходный код.

Создайте файл с именем tuts-crm.php , вставив следующий код:

01
02
03
04
05
06
07
08
09
10
11
<?php
/**
 * Plugin Name: Tuts+ CRM
 * Plugin URI: #
 * Version: 1.0
 * Author: Tuts+
 * Author URI: http://code.tutsplus.com
 * Description: A simple CRM system for WordPress
 * License: GPL2
 */
?>

Как вы увидите, это всего лишь комментарий PHP. Тем не менее, WordPress сканирует это, чтобы выяснить:

  • название плагина,
  • автор плагина,
  • описание того, что делает плагин

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

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

Большинство плагинов решают эту проблему, используя проверку function_exists() :

1
2
3
4
5
if ( ! function_exists( ‘crm’ ) ) {
    function crm() {
        // Do something here
    }
}

Хотя это останавливает ваш сайт WordPress от остановки, он не заставляет ваш плагин работать в случае конфликта.

Альтернативный объектно-ориентированный подход — заключить ваши функции в объектно-ориентированный класс. Давайте сделаем это, добавив следующий комментарий к заголовку плагина:

01
02
03
04
05
06
07
08
09
10
11
12
class WPTutsCRM {
     
    /**
     * Constructor.
     */
    function __construct() {
         
    }
     
}
 
$wpTutsCRM = new WPTutsCRM;

Это создает наш класс PHP вместе с конструкцией, которая вызывается, когда мы достигаем строки $wpTutsCRM = new WPTutsCRM;

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

Из Кодекса:

WordPress может хранить и отображать много разных типов контента. Отдельный элемент такого контента обычно называется публикацией, хотя публикация также является определенным типом публикации. Внутри все типы записей хранятся в одном и том же месте в таблице базы данных wp_posts, но различаются по столбцу с именем post_type.

WordPress 3.0 дает вам возможность добавлять свои собственные типы записей и использовать их по-разному.

Страницы и сообщения — это два распространенных типа сообщений WordPress. Мы можем расширить функциональность WordPress, добавив наш собственный тип поста. Давайте сделаем это, зарегистрировав action в конструкторе нашего плагина:

1
2
3
function __construct() {
    add_action( ‘init’, array( $this, ‘register_custom_post_type’ ) );
}

Это говорит WordPress запускать функцию register_custom_post_type внутри нашего класса при инициализации нашего плагина.

Затем добавьте функцию register_custom_post_type :

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
/**
 * Registers a Custom Post Type called contact
 */
function register_custom_post_type() {
    register_post_type( ‘contact’, array(
        ‘labels’ => array(
            ‘name’ => _x( ‘Contacts’, ‘post type general name’, ‘tuts-crm’ ),
            ‘singular_name’ => _x( ‘Contact’, ‘post type singular name’, ‘tuts-crm’ ),
            ‘menu_name’ => _x( ‘Contacts’, ‘admin menu’, ‘tuts-crm’ ),
            ‘name_admin_bar’ => _x( ‘Contact’, ‘add new on admin bar’, ‘tuts-crm’ ),
            ‘add_new’ => _x( ‘Add New’, ‘contact’, ‘tuts-crm’ ),
            ‘add_new_item’ => __( ‘Add New Contact’, ‘tuts-crm’ ),
            ‘new_item’ => __( ‘New Contact’, ‘tuts-crm’ ),
            ‘edit_item’ => __( ‘Edit Contact’, ‘tuts-crm’ ),
            ‘view_item’ => __( ‘View Contact’, ‘tuts-crm’ ),
            ‘all_items’ => __( ‘All Contacts’, ‘tuts-crm’ ),
            ‘search_items’ => __( ‘Search Contacts’, ‘tuts-crm’ ),
            ‘parent_item_colon’ => __( ‘Parent Contacts:’, ‘tuts-crm’ ),
            ‘not_found’ => __( ‘No conttacts found.’, ‘tuts-crm’ ),
            ‘not_found_in_trash’ => __( ‘No contacts found in Trash.’, ‘tuts-crm’ ),
        ),
         
        // Frontend
        ‘has_archive’ => false,
        ‘public’ => false,
        ‘publicly_queryable’ => false,
         
        // Admin
        ‘capability_type’ => ‘post’,
        ‘menu_icon’ => ‘dashicons-businessman’,
        ‘menu_position’ => 10,
        ‘query_var’ => true,
        ‘show_in_menu’ => true,
        ‘show_ui’ => true,
        ‘supports’ => array(
            ‘title’,
            ‘author’,
            ‘comments’,
        ),
    ) );
}

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

ключ Описание
этикетки Массив меток, описывающих этот тип поста. Они используются в администрации WordPress.
has_archive Включает архивы на веб-сайте внешнего интерфейса.
общественности Должен ли тип публикации быть доступен на веб-сайте администрирования и внешнего интерфейса WordPress.
publicly_queryable Можно ли запросить этот пользовательский тип сообщения на веб-сайте внешнего интерфейса.
capability_type Используется для определения возможностей, которые пользователь должен иметь для добавления, редактирования и удаления сообщений для этого типа сообщений. Это может быть существующая возможность (например, post )
menu_icon Либо URL-адрес изображения значка меню, либо класс dashicons- (3.8 или выше). Используется в администрации WordPress.
menu_position Число, указывающее, где в меню администрирования WordPress отображать этот элемент. Меньшее число означает, что оно появляется раньше.
query_var Устанавливает query_var для этого типа поста. По умолчанию используется имя типа пользовательской записи.
show_in_menu Показывать ли этот пользовательский тип сообщения в меню администрирования WordPress.
show_ui Следует ли создавать пользовательский интерфейс в администрировании WordPress, чтобы разрешать добавление, редактирование и удаление сообщений для этого пользовательского типа сообщений.
опоры Массив, детализирующий поля, доступные для этого Пользовательского Типа Сообщения. Примеры включают title , editor , excerpt и page-attributes

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

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

Давайте продолжим и добавим наш первый контакт. Нажмите «Добавить новый», а затем поместите «Джо Блоггс» в поле «Название», прежде чем нажать «Опубликовать».

Наконец, нам нужно проверить сохраненный пользовательский тип сообщения. Нажмите «Контакты» в меню администрирования WordPress, и вы увидите наш новый контакт:

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