Als u een freelance ontwerper, ontwikkelaar of bedrijfseigenaar bent, weet u hoe moeilijk het is om een centrale opslag van potentiële klantgegevens te houden. Als je dat eenmaal hebt gedaan, is het soms moeilijk om die gegevens up-to-date te houden - het loggen van oproepen die je hebt gedaan aan de prospect, e-mails die je hebt verzonden, enzovoort.
We zullen specifiek onderzoeken of een aangepast berichttype kan worden geregistreerd, aangepaste berichtvelden kunnen worden gemaakt, aangepaste berichtvelden kunnen worden weergegeven in de interface van WordPress Administration, onze aangepaste veldgegevens kunnen doorzoeken en de WordPress Administration-interface kunnen worden omgezet in een lichtgewicht CRM-interface.
Hoewel gratis en premium WordPress CRM-plug-ins bestaan (zoals WP-CRM) en externe CRM-services (zoals Salesforce of Highrise), zijn ze ofwel te complex om snel te gebruiken of hebben functies die misschien niet ideaal zijn voor onze specifieke workflow.
Door onze eigen oplossing te rollen, kunnen we een lichtgewicht, eenvoudige oplossing bouwen die in de toekomst kan worden uitgebreid op basis van uw specifieke vereisten. Bovendien leren we enkele functies van WordPress API gebruiken.
Voor deze serie zullen we een WordPress-plug-in maken en de functionaliteit uitbreiden via elk onderdeel in deze serie.
De broncode wordt aan het einde van elk artikel volledig weergegeven, maar tot die tijd kunnen we de plug-in stap voor stap maken.
Eerst maakt u in uw lokale installatie van WordPress een map aan in wp-content / plugins
riep tuts-crm
. Vanaf hier beginnen we met het toevoegen van onze broncode.
Maak een bestand met de naam tuts-crm.php
, invoegen van de volgende code:
Zoals u zult zien, is dit slechts een PHP-opmerking. WordPress scant dit echter om erachter te komen:
In het WordPress-dashboard activeert u uw nieuwe plug-in door naar "Plug-ins"> "Geïnstalleerde plug-ins" te gaan en vervolgens te klikken op "Activeren" naast de CRM-plug-in:
Met elke WordPress-website met een mogelijk aantal en combinatie van plug-ins, is het mogelijk dat een functienaam die we kiezen te gebruiken (zoals crm ()
) conflicteert met een andere plug-in die dezelfde gebruikt.
De meeste plug-ins kunnen dit probleem omzeilen door een function_exists ()
controleren:
if (! function_exists ('crm')) function crm () // Doe hier iets
Hoewel dit voorkomt dat uw WordPress-site tot stilstand komt, krijgt uw plug-in geen werking als er een conflict is.
Een alternatieve objectgeoriënteerde benadering is om je functies in een objectgerichte klasse in te pakken. Laten we dat doen door het volgende toe te voegen onder de opmerking van de plug-in header:
klasse WPTutsCRM / ** * Constructor. Wordt aangeroepen wanneer de plugin wordt geïnitialiseerd * / function __construct () $ wpTutsCRM = new WPTutsCRM;
Hiermee wordt onze PHP-klasse gemaakt, samen met een constructie, die wordt genoemd wanneer we de regel bereiken $ wpTutsCRM = nieuwe WPTutsCRM;
Vervolgens moeten we een aangepast berichttype registreren, waarin elk contact in ons CRM-systeem wordt opgeslagen.
Van de Codex:
WordPress kan veel verschillende soorten inhoud bevatten en weergeven. Een enkel item van een dergelijke inhoud wordt meestal een post genoemd, hoewel post ook een specifiek berichttype is. Intern worden alle berichttypen opgeslagen op dezelfde plaats, in de databasetabel wp_posts, maar worden ze gedifferentieerd door een kolom genaamd post_type.
WordPress 3.0 biedt u de mogelijkheid om uw eigen aangepaste berichttypen toe te voegen en op verschillende manieren te gebruiken.
Pagina's en berichten zijn twee veelvoorkomende WordPress berichttypes. We kunnen de functionaliteit van WordPress uitbreiden door ons eigen aangepast berichttype toe te voegen. Laten we dit doen door een te registreren actie
aan de constructeur van onze plugin:
function __construct () add_action ('init', array ($ this, 'register_custom_post_type'));
Dit vertelt WordPress om het register_custom_post_type
functie binnen onze klasse wanneer onze plug-in is geïnitialiseerd.
Voeg vervolgens de register_custom_post_type
functie:
/ ** * Registreert een aangepast berichttype genaamd contact * / function register_custom_post_type () register_post_type ('contact', array ('labels' => array ('name' => _x ('Contacts', 'post type algemene naam' , '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 ',' nieuw toevoegen op beheerbalk ',' tuts-crm '),' add_new '=> _x (' Nieuw toevoegen ',' contact ',' tuts -crm '),' add_new_item '=> __ (' Nieuw contact toevoegen ',' tuts-crm '),' new_item '=> __ (' Nieuw contact ',' tuts-crm '),' edit_item '=> __ ('Bewerk contact', 'tuts-crm'), 'view_item' => __ ('Bekijk contact', 'tuts-crm'), 'all_items' => __ ('Alle contacten', 'tuts-crm') , 'search_items' => __ ('Zoek contacten', 'tuts-crm'), 'parent_item_colon' => __ ('Parent Contacts:', 'tuts-crm'), 'not_found' => __ ('Geen conttacten gevonden. ',' tuts-crm '),' not_found_in_trash '=> __ (' Geen contacten gevonden in Prullenbak. ',' 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',),));
Hiermee wordt een Aangepast berichttype geregistreerd contact. register_post_type
accepteert de volgende reeks argumenten:
sleutel | Omschrijving |
---|---|
labels | Een reeks labels die dit berichttype beschrijven. Deze worden gebruikt in het WordPress-beheer. |
has_archive | Maakt archieven op de frontend-website mogelijk. |
openbaar | Of het berichttype beschikbaar moet zijn in het WordPress-beheer en de frontend-website. |
publicly_queryable | Of dit aangepaste berichttype kan worden opgevraagd via de frontend-website. |
capability_type | Gebruikt om de mogelijkheden te definiëren die de gebruiker zou moeten hebben om berichten voor dit berichttype toe te voegen, te bewerken en te verwijderen. Dit kan een bestaande mogelijkheid zijn (zoals post ) |
menu_icon | Ofwel de URL naar de menupictogramafbeelding, of een dashicons- klasse (3.8 of hoger). Gebruikt in het WordPress-beheer. |
menu_position | Een nummer dat aangeeft waar in het WordPress Administration-menu dit item wordt weergegeven. Een lager nummer betekent dat het eerder verschijnt. |
query_var | Stelt de query_var in voor dit berichttype. Standaard ingesteld op de naam van het aangepaste berichttype. |
show_in_menu | Of dit aangepaste berichttype in het WordPress-beheermenu moet worden weergegeven. |
show_ui | Of u een gebruikersinterface in het WordPress-beheer wilt genereren om berichten voor dit aangepaste berichttype toe te staan, te bewerken of te verwijderen. |
ondersteuningen | Een array met de velden die beschikbaar zijn voor dit aangepaste berichttype. Voorbeelden hiervan zijn titel , editor , uittreksel en pagina-attributen |
Sla uw plug-in op en bekijk uw WordPress-dashboard. U zou een nieuw menu-item moeten zien genaamd Contacten:
Klik op dit item en u zou een vertrouwde interface moeten zien die u gebruikt om berichten en pagina's te beheren:
Laten we doorgaan en ons eerste contact toevoegen. Klik op 'Nieuw toevoegen' en plaats 'Joe Bloggs' in het veld 'Titel' voordat u op 'Publiceren' klikt.
Ten slotte moeten we het aangepaste berichttype controleren. Klik terug op "Contacten" in het WordPress beheermenu, en u zou onze nieuwe contactpersoon moeten zien:
In het volgende artikel gaan we aangepaste velden toevoegen aan ons Aangepaste berichttype, waardoor we meer informatie kunnen opslaan over onze prospects en klanten.