Wenn Sie ein freiberuflicher Designer, Entwickler oder Unternehmer sind, wissen Sie, wie schwierig es ist, potenzielle Kundendaten zentral zu speichern. Wenn Sie das erreicht haben, ist es manchmal schwierig, diese Daten auf dem neuesten Stand zu halten - Anrufe, die Sie an den Interessenten gerichtet haben, E-Mails, die Sie gesendet haben, usw. protokollieren.
Im Besonderen werden wir das Registrieren eines benutzerdefinierten Post-Typs untersuchen, benutzerdefinierte Post-Felder erstellen, benutzerdefinierte Post-Felder in der WordPress-Administrationsoberfläche anzeigen, unsere benutzerdefinierten Felddaten durchsuchen und die WordPress-Administrationsoberfläche in eine schlanke CRM-Oberfläche verwandeln.
Es gibt zwar kostenlose und erstklassige WordPress CRM-Plugins (wie WP-CRM) und CRM-Services von Drittanbietern (wie Salesforce oder Highrise), sie sind jedoch entweder zu komplex, um sie schnell nutzen zu können, oder sie verfügen über Funktionen, die für unser Unternehmen möglicherweise nicht ideal sind Arbeitsablauf.
Durch das Rollen unserer eigenen Lösung können wir eine leichte, einfache Lösung aufbauen, die in der Zukunft je nach Ihren spezifischen Anforderungen erweitert werden kann. Außerdem erfahren Sie, wie Sie einige WordPress-API-Funktionen verwenden.
Für diese Serie erstellen wir ein WordPress-Plugin und erweitern dessen Funktionalität durch jeden Teil dieser Serie.
Der Quellcode wird am Ende jedes Artikels vollständig zur Verfügung gestellt. Bis dahin erstellen wir das Plugin Schritt für Schritt.
Erstellen Sie zunächst in Ihrer lokalen Installation von WordPress ein Verzeichnis in WP-Inhalt / Plugins
namens Tuts-Crm
. Ab hier fügen wir unseren Quellcode hinzu.
Erstellen Sie eine Datei mit dem Namen tuts-crm.php
, folgenden Code einfügen:
Wie Sie sehen, ist dies nur ein PHP-Kommentar. WordPress scannt dies jedoch, um Folgendes herauszufinden:
Aktivieren Sie im WordPress-Dashboard Ihr neues Plugin, indem Sie zu "Plugins"> "Installierte Plugins" gehen und dann neben dem CRM-Plugin auf "Aktivieren" klicken:
Bei jeder WordPress-Website mit einer beliebigen Anzahl und Kombination von Plugins ist es möglich, dass ein Funktionsname verwendet wird (z. B. crm ()
) steht in Konflikt mit einem anderen Plugin, das dasselbe verwendet.
Die meisten Plugins umgehen dieses Problem mit einem function_exists ()
prüfen:
if (! function_exists ('crm')) function crm () // Hier etwas tun
Während dies verhindert, dass Ihre WordPress-Site zum Stillstand kommt, kann Ihr Plugin bei Konflikten nicht funktionieren.
Ein alternativer objektorientierter Ansatz besteht darin, Ihre Funktionen in eine objektorientierte Klasse zu packen. Lassen Sie uns dies tun, indem Sie unterhalb des Plugin-Kopfkommentars Folgendes hinzufügen:
Klasse WPTutsCRM / ** * Konstruktor. Wird beim Initialisieren des Plugins aufgerufen * / function __construct () $ wpTutsCRM = new WPTutsCRM;
Dadurch wird unsere PHP-Klasse zusammen mit einem Konstrukt erstellt, das aufgerufen wird, wenn wir die Zeile erreichen $ wpTutsCRM = neue WPTutsCRM;
Als Nächstes müssen wir einen benutzerdefinierten Beitragstyp registrieren, der jeden Kontakt in unserem CRM-System speichert.
Aus dem Kodex:
WordPress kann viele verschiedene Arten von Inhalten halten und anzeigen. Ein einzelnes Element eines solchen Inhalts wird im Allgemeinen als Beitrag bezeichnet, obwohl der Beitrag auch ein bestimmter Beitragstyp ist. Intern werden alle Post-Typen an derselben Stelle in der Datenbanktabelle wp_posts gespeichert, jedoch durch eine Spalte namens post_type unterschieden.
WordPress 3.0 bietet Ihnen die Möglichkeit, Ihre eigenen benutzerdefinierten Beitragstypen hinzuzufügen und sie auf verschiedene Arten zu verwenden.
Seiten und Beiträge sind zwei übliche WordPress-Beitragstypen. Wir können die Funktionalität von WordPress erweitern, indem wir unseren eigenen benutzerdefinierten Beitragstyp hinzufügen. Lassen Sie uns dies tun, indem Sie ein registrieren Aktion
zu unserem Plugin-Konstruktor:
function __construct () add_action ('init', array ($ this, 'register_custom_post_type'));
Dies weist WordPress an, das auszuführen register_custom_post_type
Funktion innerhalb unserer Klasse, wenn unser Plugin initialisiert wird.
Als nächstes fügen Sie das hinzu register_custom_post_type
Funktion:
/ ** * Registriert einen benutzerdefinierten Post-Typ mit dem Namen contact * / function register_custom_post_type () register_post_type ('contact', array ('labels' => array ('name' => _x ('contact', 'post type general name' , 'tuts-crm'), 'singular_name' => _x ('Kontakt', 'Beitragstyp, Singularname', 'tuts-crm'), 'menu_name' => _x ('Kontakte', 'Admin-Menü', ' tuts-crm '),' name_admin_bar '=> _x (' Kontakt ',' Neues in der Administrationsleiste hinzufügen ',' tuts-crm '),' add_new '=> _x (' Neu hinzufügen ',' Kontakt ',' tuts -crm '),' add_new_item '=> __ (' Neuen Kontakt hinzufügen ',' tuts-crm '),' new_item '=> __ (' Neuer Kontakt ',' tuts-crm '),' edit_item '=> __ ('Kontakt bearbeiten', 'tuts-crm'), 'view_item' => __ ('Kontakt anzeigen', 'tuts-crm'), 'all_items' => __ ('Alle Kontakte', 'tuts-crm') , 'search_items' => __ ('Kontakte suchen', 'tuts-crm'), 'parent_item_colon' => __ ('Übergeordnete Kontakte:', 'tuts-crm'), 'not_found' => __ ('Keine Kontakte found. ',' tuts-crm '),' not_found_in_trash '=> __ (' Keine Kontakte im Papierkorb gefunden. ',' tuts-crm '),), // Frontend' has_archive '=> false, 'public' => false, 'publicly_queryable' => false, // Admin'acity_type '=>' post ',' menu_icon '=>' dashicons-businessman ',' menu_position '=> 10,' query_var '= > true, 'show_in_menu' => true, 'show_ui' => true, 'unterstützt' => array ('title', 'author', 'comments'))));
Dies registriert einen aufgerufenen benutzerdefinierten Beitragstyp Kontakt. register_post_type
akzeptiert das folgende Array von Argumenten:
Schlüssel | Beschreibung |
---|---|
Etiketten | Eine Reihe von Labels, die diesen Beitragstyp beschreiben. Diese werden in der WordPress-Administration verwendet. |
has_archive | Aktiviert Archive auf der Frontend-Website. |
Öffentlichkeit | Ob der Beitragstyp in der WordPress-Administrations- und Frontend-Website verfügbar sein soll. |
public_queryable | Ob dieser benutzerdefinierte Beitragstyp von der Frontend-Website abgefragt werden kann. |
Capability_type | Wird verwendet, um die Funktionen zu definieren, über die der Benutzer verfügen muss, um Beiträge für diesen Beitragstyp hinzuzufügen, zu bearbeiten und zu löschen. Dies kann eine vorhandene Funktion sein (z. B. Post ) |
menu_icon | Entweder die URL zum Menüsymbol oder a Dashicons- Klasse (3,8 oder höher). Wird in der WordPress-Administration verwendet. |
menu_position | Eine Zahl, die angibt, wo im WordPress-Verwaltungsmenü dieses Element angezeigt werden soll. Eine niedrigere Zahl bedeutet, dass es früher erscheint. |
query_var | Legt die query_var für diesen Beitragstyp fest. Der Standardwert ist der Name des benutzerdefinierten Beitragstyps. |
show_in_menu | Ob dieser benutzerdefinierte Beitragstyp im WordPress-Verwaltungsmenü angezeigt werden soll. |
show_ui | Ob in der WordPress-Administration eine Benutzeroberfläche erstellt werden soll, um das Hinzufügen, Bearbeiten und Löschen von Beiträgen für diesen benutzerdefinierten Beitragstyp zu ermöglichen. |
unterstützt | Ein Array, das die für diesen benutzerdefinierten Beitragstyp verfügbaren Felder beschreibt. Beispiele beinhalten Titel , Editor , Auszug und Seitenattribute |
Speichern Sie Ihr Plugin und zeigen Sie dann Ihr WordPress-Dashboard an. Sie sollten einen neuen Menüeintrag mit dem Namen sehen Kontakte:
Klicken Sie auf diesen Eintrag, und Sie sollten eine vertraute Benutzeroberfläche sehen, die Sie zum Verwalten von Posts und Seiten verwenden:
Lassen Sie uns fortfahren und unseren ersten Kontakt hinzufügen. Klicken Sie auf "Neu hinzufügen" und geben Sie "Joe Bloggs" in das Feld "Titel" ein, bevor Sie auf "Veröffentlichen" klicken.
Zum Schluss müssen wir den gespeicherten benutzerdefinierten Beitragstyp überprüfen. Klicken Sie im WordPress-Verwaltungsmenü wieder auf "Kontakte", und Sie sollten unseren neuen Kontakt sehen:
Im nächsten Artikel werden wir unserem Kontaktpostarttyp benutzerdefinierte Felder hinzufügen, sodass wir mehr Informationen über unsere potenziellen Kunden und Kunden speichern können.