Lag en enkel CRM i WordPress Opprett en egendefinert innleggstype

Hvis du er frilansdesigner, utvikler eller bedriftseier, vet du hvor vanskelig det er å holde en sentral butikk av potensielle kundedata. Når du har oppnådd det, er det noen ganger vanskelig å holde dataene oppdatert - logge samtaler du har gjort til prospektet, e-postene du har sendt, og så videre.

Nærmere bestemt vil vi undersøke å registrere en egendefinert innleggstype, opprette egendefinerte innleggsfelt, vise egendefinerte innleggsfelt i WordPress Administration-grensesnittet, søke etter tilpassede feltdata og snu WordPress Administration-grensesnittet i et lett CRM-grensesnitt.

Hvorfor ikke bruk et CRM-plugin (eller et CRM-system?)

Mens gratis og premium WordPress CRM-plugins finnes (for eksempel WP-CRM) og tredjeparts CRM-tjenester (for eksempel Salesforce eller Highrise), er de enten for komplekse til å begynne å bruke raskt, eller har funksjoner som kanskje ikke er ideelle for vår spesielle arbeidsflyt.

Ved å rulle vår egen løsning, kan vi bygge en lett, enkel løsning som kan bli utvidet i fremtiden basert på dine spesifikke krav. I tillegg lærer vi hvordan du bruker noen av WordPress API-funksjonene.

Opprette CRM-plugin

For denne serien lager vi et WordPress-plugin og utvider funksjonaliteten gjennom hver del i denne serien.

Kilden koden vil bli gitt i sin helhet på slutten av hver artikkel, men til da, la oss lage plugin trinn for trinn.

Først må du opprette en katalog i din lokale installasjon av WordPress wp-innhold / tillegg kalt Tuts-crm. Herfra begynner vi å legge til kildekoden vår.

Plugin Header

Opprett en fil som heter Tuts-crm.php, setter inn følgende kode:

Som du ser, er dette bare en PHP-kommentar. Imidlertid skanner WordPress dette for å finne ut:

  • navnet på pluginet,
  • forfatteren av plugin,
  • beskrivelsen av hva plugin gjør

I WordPress-dashbordet aktiverer du det nye pluginet ved å gå til "Plugins"> "Installed Plugins," og deretter klikke "Activate" ved siden av CRM plugin:

Sette opp vår Plugin Class

Med et hvilket som helst WordPress-nettsted som har noen mulig tall og kombinasjon av plugins, er det mulig at et funksjonsnavn vi velger å bruke (for eksempel crm ()) konflikter med et annet plugin som bruker det samme.

De fleste pluginene løser dette problemet ved å bruke en function_exists () kryss av:

hvis (! function_exists ('crm')) funksjon crm () // Gjør noe her

Mens dette stopper ditt WordPress-nettsted fra sliping, stopper det ikke pluginet ditt hvis det oppstår konflikt.

En alternativ objektorientert tilnærming er å pakke inn funksjonene i en objektorientert klasse. La oss gå videre og gjøre det ved å legge til følgende under pluginheader-kommentaren:

klassen WPTutsCRM / ** * Constructor. Kalt når plugin er initialisert * / funksjon __construct ()  $ wpTutsCRM = ny WPTutsCRM;

Dette skaper vår PHP-klasse, sammen med en konstruksjon, som kalles når vi når linjen $ wpTutsCRM = ny WPTutsCRM;

Registrer vår egendefinerte innleggstype

Deretter må vi registrere en egendefinert innleggstype, som lagrer hver kontakt i vårt CRM-system.

Fra Codex:

WordPress kan holde og vise mange forskjellige typer innhold. Et enkelt element av et slikt innhold kalles vanligvis et innlegg, selv om innlegget også er en bestemt posttype. Internt lagres alle posttyper på samme sted, i wp_posts database tabellen, men er differensiert av en kolonne som heter post_type.

WordPress 3.0 gir deg muligheten til å legge til dine egne egendefinerte innleggstyper og å bruke dem på forskjellige måter.

Sider og innlegg er to vanlige WordPress-posttyper. Vi kan utvide WordPress 'funksjonalitet ved å legge til vår egen tilpassede posttype. La oss gjøre dette ved å registrere en handling til vår Plugins konstruktør:

funksjon __construct () add_action ('init', array ($ this, 'register_custom_post_type'));  

Dette forteller WordPress å kjøre register_custom_post_type Fungerer inne i vår klasse når vårt plugin er initialisert.

Deretter legger du til register_custom_post_type funksjon:

/ ** * Registrerer en egendefinert posttype som kalles kontakt * / funksjon register_custom_post_type () register_post_type ('kontakt', array ('labels' => array ('name' => _x ('Kontakter', 'posttype generell navn' , 'tuts-crm'), 'singular_name' => _x ('Kontakt', 'posttype entall navn', 'tuts-crm'), 'menu_name' => _x ('Kontakter', 'admin-meny' tuts-crm '),' name_admin_bar '=> _x (' Kontakt ',' legg til nytt på admin bar ',' tuts-crm '),' add_new '=> _x (' Legg til nytt ',' kontakt ' -crm '),' add_new_item '=> __ (' Legg til ny kontakt ',' tuts-crm '),' new_item '=> __ (' Ny kontakt ',' tuts-crm '),' edit_item '=> __ ('Edit Contact', 'tuts-crm'), 'view_item' => __ ('Vis kontakt', 'tuts-crm'), 'all_items' => __ ('Alle kontakter', 'tuts-crm') , 'search_items' => __ ('Søk kontakter', 'tuts-crm'), 'parent_item_colon' => __ ('Parent Contacts:', 'tuts-crm'), 'not_found' => __ ('Ingen kontakt funnet ',' tuts-crm '),' not_found_in_trash '=> __ (' Ingen kontakter funnet i Papirkurv. ',' tuts-crm '),), / Frontend' has_archive '=> false, 'public' => false, 'publicly_queryable' => false, // Admin 'capability_type' => 'innlegg', 'menu_icon' => 'dashicons-businessman', 'menu_position' => 10, 'query_var' = > true, 'show_in_menu' => true, 'show_ui' => true, 'supports' => array ('tittel', 'forfatter', 'kommentarer',),)));  

Dette registrerer en egendefinert posttype som kalles ta kontakt med. register_post_type aksepterer følgende rekke argumenter:

nøkkel Beskrivelse
etiketter En rekke etiketter som beskriver denne posttypen. Disse brukes i WordPress-administrasjonen.
has_archive Aktiverer arkiver på frontend-websiden.
offentlig Om posttypen skal være tilgjengelig på WordPress administrasjon og frontend-websiden.
publicly_queryable Om denne egendefinerte innleggstypen kan forespørres fra nettsiden for frontend.
capability_type Brukes til å definere funksjonene som brukeren burde ha for å kunne legge til, redigere og slette innlegg for denne innleggstypen. Dette kan være en eksisterende evne (for eksempel post)
menu_icon Enten nettadressen til menyikonbildet, eller a dashicons- klasse (3,8 eller høyere). Brukes i WordPress-administrasjonen.
menu_position Et nummer som angir hvor i WordPress Administrasjon-menyen for å vise dette elementet. Lavere tall betyr at det vises tidligere.
query_var Angir spørringen_var for denne innleggstypen. Standard til navnet på den egendefinerte innleggstypen.
show_in_menu Enten å vise denne egendefinerte innleggstypen i WordPress-administrasjonsmenyen.
show_ui Enten å generere et brukergrensesnitt i WordPress-administrasjonen for å tillate å legge til, redigere og slette Innlegg for denne egendefinerte innleggstypen.
støtter En matrise som angir feltene som er tilgjengelige for denne egendefinerte innleggstypen. Eksempler inkluderer tittel, redaktør, utdrag og page-attributter

Lagre pluginet ditt, og se deretter ditt WordPress dashboard. Du bør se en ny menyoppføring kalt Kontakt:

Klikk på denne oppføringen, og du bør se et kjent grensesnitt til det du bruker til å administrere Innlegg og sider:

La oss gå videre og legge til vår første kontakt. Klikk på "Legg til ny", og legg deretter "Joe Bloggs" i "Tittel" -feltet, før du klikker "Publiser".

Til slutt må vi sjekke egendefinert posttype lagret. Klikk tilbake på "Kontakter" i WordPress administrasjonsmenyen, og du bør se vår nye kontakt:

Neste…

I neste artikkel skal vi legge til egendefinerte felt i vår Kontakt tilpassede posttype, slik at vi kan lagre mer informasjon om våre prospekter og kunder.