Создание простого CRM плагина для WordPress ч.1

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

Зачем создавать очередную CRM для WordPress?

На этот вопрос я могу дать несколько ответов:

  1. Создание CRM это очень хороший повод потренироваться в создании плагинов на WP;
  2. Создаваемая CRM будет полностью Ваша и именно с тем функционалом который Вы захотите.

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

Создание CRM плагина

Для начала в папке /wp-content/plugins/ создадим папку zcrm и внутри нее положим файл zcrm.php.

Открываем файл zcrm.php и в самое начало вписываем следующий код:

<?php
/*
Plugin Name: ZCRM
Plugin URI: https://www.ziscod.com/
Description: Простая CRM для WordPress
Version: 1.0
Author: Anton Lokotkov
Author URI: https://www.ziscod.com/
*/

define(PATCH_ZCRM, WP_PLUGIN_URL.'/'.str_replace(basename( __FILE__),"",plugin_basename(__FILE__)));

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

После вставки кода сохраняемся и идем в админ панель WP в пункт меню «Плагины». В самом конце ищете плагин ZCRM и активируете его.

Активация плагина

Начинаем разработку плагина

Теперь определимся где будет располагаться весь код. Код можно писать в функции zcrmfun(), но тогда желательно проверять не существует ли где-нибудь подобная функция. Конструкция кода в этом случае будет выглядеть так:

if ( ! function_exists( ' zcrmfun ' ) ) {
    function zcrmfun () {
    
    }
}

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

class ZCRM {
    function __construct() {
        
    }
}

$zcrm = new ZCRM;

Создаем пользовательские типы записей

Итак теперь давайте создадим пользовательский тип записей который будет содержать все контакты CRM. Подробнее о создании кастомных типах записей можно почитать в кодексе

Теперь добавим в конструктор следующее хук событие:

function __construct() {
    add_action( 'init','register_custom_post_type');
}

И пропишем код регистрации пользовательской записи.

function register_custom_post_type() {
    register_post_type( 'contact', array(
        'labels' => array(
            'name'               => _x( 'Контакты', 'post type general name', 'zcrm' ),
            'singular_name'      => _x( 'Контакты', 'post type singular name', 'zcrm' ),
            'menu_name'          => _x( 'Контакты', 'admin menu', 'zcrm' ),
            'name_admin_bar'     => _x( 'Контакт', 'add new on admin bar', 'zcrm' ),
            'add_new'            => _x( 'Добавить', 'contact', 'zcrm' ),
            'add_new_item'       => __( 'Добавить новый контакт', 'zcrm' ),
            'new_item'           => __( 'Новый контакт', 'zcrm' ),
            'edit_item'          => __( 'Редактировать', 'zcrm' ),
            'view_item'          => __( 'Просмотреть', 'zcrm' ),
            'all_items'          => __( 'Все контакты', 'zcrm' ),
            'search_items'       => __( 'Поиск контактов', 'zcrm' ),
            'parent_item_colon'  => __( 'Другие контакты:', 'zcrm' ),
            'not_found'          => __( 'Контактов не найдено.', 'zcrm' ),
            'not_found_in_trash' => __( 'Корзина пуста.', 'zcrm' ),
        ),
        'has_archive'        => false,
        'public'             => false,
        'publicly_queryable' => false,
        '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',
        ),
    ) );
}

Теперь в аминке WP появиться дополнительный пункт меню – «Контакты». В нем можно делать все то же, что и при работе с обычными записями в WP.

Контакты CRM

Итак, в этом после я рассмотрел начальный процесс создания плагина CRM для WP и реализовал возможность добавления новых контактов через кастомные типы записей. Продолжение разработки плагина CRM для WordPress ждите в следующих постах.

Подписаться на новые статьи