Si vous êtes un designer, développeur ou chef d'entreprise indépendant, vous savez à quel point il est difficile de conserver un stock central de données sur les clients potentiels. Une fois que vous avez accompli cela, il est parfois difficile de garder ces données à jour - enregistrez les appels que vous avez passés au prospect, les courriels que vous avez envoyés, etc..
Plus précisément, nous explorerons l’enregistrement d’un type de publication personnalisé, la création de champs de publication personnalisés, l’affichage des champs de publication personnalisés dans l’interface d’administration de WordPress, la recherche de nos données de champ personnalisées et la transformation de l’interface d’administration de WordPress en une interface CRM légère..
Bien que des plugins WordPress CRM gratuits et premium existent (tels que WP-CRM) et des services CRM tiers (tels que Salesforce ou Highrise), ils sont trop complexes pour pouvoir être utilisés rapidement ou présentent des fonctionnalités qui pourraient ne pas être idéales pour nos utilisateurs particuliers. flux de travail.
En déployant notre propre solution, nous pouvons construire une solution légère et simple, qui pourrait être étendue à l'avenir en fonction de vos besoins spécifiques. De plus, nous allons apprendre à utiliser certaines des fonctions de l'API WordPress.
Pour cette série, nous allons créer un plugin WordPress et étendre ses fonctionnalités à travers chaque partie de cette série..
Le code source sera fourni en entier à la fin de chaque article, mais jusque-là, créons le plugin pas à pas..
Tout d'abord, dans votre installation locale de WordPress, créez un répertoire dans wp-content / plugins
appelé tuts-crm
. A partir de là, nous allons commencer à ajouter notre code source.
Créez un fichier appelé tuts-crm.php
, insérer le code suivant:
Comme vous le verrez, il ne s'agit que d'un commentaire PHP. Cependant, WordPress analyse ceci pour comprendre:
Dans le tableau de bord WordPress, activez votre nouveau plug-in en sélectionnant "Plug-ins"> "Plug-ins installés", puis en cliquant sur "Activer" en regard du plug-in CRM:
Avec n'importe quel site Web WordPress ayant un nombre et une combinaison possibles de plugins, il est possible qu'un nom de fonction que nous choisissons d'utiliser (tel que crm ()
) est en conflit avec un autre plugin qui utilise le même.
La plupart des plugins contournent ce problème en utilisant un function_exists ()
vérifier:
if (! function_exists ('crm')) function crm () // Faites quelque chose ici
Même si cela empêche votre site WordPress de s'arrêter, votre plugin ne fonctionne pas en cas de conflit..
Une autre approche orientée objet consiste à envelopper vos fonctions dans une classe orientée objet. Continuons en ajoutant ce qui suit sous le commentaire d'en-tête du plugin:
class WPTutsCRM / ** * Constructeur. Appelé lorsque le plug-in est initialisé * / function __construct () $ wpTutsCRM = new WPTutsCRM;
Cela crée notre classe PHP, avec une construction, qui est appelée lorsque nous atteignons la ligne $ wpTutsCRM = new WPTutsCRM;
Ensuite, nous devons enregistrer un type de message personnalisé, qui stockera chaque contact dans notre système CRM..
Du Codex:
WordPress peut contenir et afficher de nombreux types de contenu. Un seul élément d'un tel contenu est généralement appelé une publication, bien que cette publication soit également un type de publication spécifique. En interne, tous les types de publication sont stockés au même endroit, dans la table de la base de données wp_posts, mais sont différenciés par une colonne appelée post_type..
WordPress 3.0 vous permet d'ajouter vos propres types d'articles et de les utiliser de différentes manières..
Les pages et les messages sont deux types courants de messages WordPress. Nous pouvons étendre les fonctionnalités de WordPress en ajoutant notre propre type de message personnalisé. Faisons cela en enregistrant un action
au constructeur de notre plugin:
function __construct () add_action ('init', array ($ this, 'register_custom_post_type'));
Ceci dit à WordPress d’exécuter le register_custom_post_type
fonctionner dans notre classe quand notre plugin est initialisé.
Ensuite, ajoutez le register_custom_post_type
une fonction:
/ ** * Enregistre un type de publication personnalisé appelé contact * / function register_custom_post_type () register_post_type ('contact', array ('labels' => array ('name' => _x ('Contacts', nom général de type publication ')' , 'tuts-crm'), 'singular_name' => _x ('Contact', 'nom singulier du type de message', 'tuts-crm'), 'menu_name' => _x ('Contacts', 'menu admin.', ' tuts-crm '),' name_admin_bar '=> _x (' Contact ',' Ajouter nouveau sur la barre d'administration ',' Tuts-crm '),' add_new '=> _x (' Ajouter nouveau ',' Contact ',' Tuts -crm '),' add_new_item '=> __ (' Ajouter un nouveau contact ',' tuts-crm '),' new_item '=> __ (' Nouveau contact ',' tuts-crm '),' edit_item '=> __ ('Edit Contact', 'tuts-crm'), 'view_item' => __ ('Afficher le contact', 'tuts-crm'), 'all_items' => __ ('Tous les contacts', 'tuts-crm') , 'search_items' => __ ('Rechercher des contacts', 'tuts-crm'), 'parent_item_colon' => __ ('Contacts parents:', 'tuts-crm'), 'not_found' => __ ('Aucun contact found. ',' tuts-crm '),' not_found_in_trash '=> __ (' Aucun contact trouvé dans la corbeille. ',' tuts-crm '),), // Frontend' has_archive '=> false, 'public' => false, 'public_queryable' => false, // Admin 'type_de capacité' => 'post', 'menu_icon' => 'dashicons-businessman', 'menu_position' => 10, 'query_var' = > true, 'show_in_menu' => true, 'show_ui' => true, 'supports' => array ('titre', 'auteur', 'commentaires',));
Ceci enregistre un type de message personnalisé appelé contact. register_post_type
accepte le tableau d'arguments suivant:
clé | La description |
---|---|
Étiquettes | Un tableau d'étiquettes décrivant ce type d'article. Ceux-ci sont utilisés dans l'administration WordPress. |
has_archive | Active les archives sur le site Web frontal. |
Publique | Si le type de publication doit être disponible dans les sites Web d'administration et frontaux de WordPress. |
publiquement interrogeable | Si ce type de publication personnalisée peut être interrogé à partir du site Web frontal. |
type de capacité | Utilisé pour définir les fonctionnalités dont l'utilisateur devrait disposer pour ajouter, modifier et supprimer des publications pour ce type de publication. Cela pourrait être une capacité existante (telle que poster ) |
menu_icon | Soit l’URL de l’image de l’icône du menu, soit un dashicons- classe (3.8 ou plus). Utilisé dans l'administration WordPress. |
menu_position | Un numéro indiquant où dans le menu Administration de WordPress afficher cet élément. Plus le nombre est bas, plus il apparaît tôt. |
query_var | Définit la variable query_var pour ce type de publication. Par défaut, le nom du type de message personnalisé. |
show_in_menu | Indique si ce type de message personnalisé doit être affiché dans le menu Administration de WordPress. |
show_ui | S'il faut générer une interface utilisateur dans l'administration WordPress pour permettre l'ajout, la modification et la suppression de publications pour ce type de publication personnalisée. |
les soutiens | Un tableau détaillant les champs disponibles pour ce type de publication personnalisé. Les exemples comprennent Titre , éditeur , extrait et attributs de page |
Enregistrez votre plugin, puis affichez votre tableau de bord WordPress. Vous devriez voir une nouvelle entrée de menu appelée Contacts:
Cliquez sur cette entrée et vous devriez voir une interface familière à celle que vous utilisez pour gérer les posts et les pages:
Allons-y et ajoutons notre premier contact. Cliquez sur "Ajouter un nouveau", puis mettez "Joe Bloggs" dans le champ "Titre", avant de cliquer sur "Publier".
Enfin, nous devons vérifier le type de message personnalisé enregistré. Cliquez de nouveau sur "Contacts" dans le menu d'administration de WordPress, et vous devriez voir notre nouveau contact:
Dans le prochain article, nous allons ajouter des champs personnalisés à notre type de message personnalisé, nous permettant de stocker davantage d'informations sur nos prospects et clients..