Wie schreibt man ein WordPress-Plugin Most Popular By Views

Wenn Sie immer mehr für WordPress schreiben, wird der Schwierigkeitsgrad und die Komplexität Ihrer Plugins letztendlich weit über die einfache Back-End-Datenmanipulation hinausgehen, wie in unserem Artikel für Anfänger gezeigt wird. In diesem Teil werden wir ausführlich behandeln: Datenbankinteraktion, Admin-Widgets und Sidebar-Widgets. Das heutige Beispiel wird ein benutzerdefiniertes Plugin "Beliebteste nach Ansichten" sein, das ein Widget für den Verwaltungsbereich zum Anzeigen und ein Seitenleisten-Widget für Besucher erstellt.


Schritt 0. Was wird es tun??

Bevor wir unsere IDE öffnen oder Code schreiben, sollten Sie immer eine Liste herausgeben, welche Funktionen Ihr Plugin haben wird und welche nicht (zumindest in der Anfangsphase können Sie es später immer noch erweitern). Für unser Plugin "Most Popular By Views" besteht unsere Hauptfunktion darin, eine Liste der beliebtesten Beiträge anzuzeigen (sagen wir, Top 10). Zweitens stellen wir die Liste auch als eine Art Low-Tech-Analyse in den Admin-Bereich. Als letztes geben wir den Entwicklern die Option, sie überall anzuzeigen, indem sie als Sidebar-Widget und über eine einfache Funktion verfügbar gemacht werden.

Eigenschaften:

  • Erstellt eine Liste der zehn beliebtesten Beiträge basierend auf Ansichten
  • Die Liste wird im Admin-Bereich als Low-Tech-Analyse angezeigt
  • Die Liste ist sowohl als Sidebar-Widget als auch als Funktion verfügbar

Schritt 1. Die Datenbank

Bevor wir die beliebtesten Posts anzeigen können, müssen wir Daten darüber sammeln, welche Posts wie oft angezeigt werden. Aber bevor wir das tun können, müssen wir irgendwo all diese Daten ablegen. Erstellen Sie in einer neuen Plugin-Datei eine neue Funktion (ppbv_create_table) das wird prüfen, ob unsere Tabelle existiert. Wenn dies nicht der Fall ist, erstellen wir es. Unsere Methode dazu ist ziemlich einfach. Wir verwenden $ wpdb-> get_results, um eine SQL-Anweisung auszuführen, die nach einer Tabelle mit dem Namen "wp_popular_by_views" sucht. Wenn die Tabelle nicht gefunden wird, gibt get_results null zurück. Wenn das der Fall ist, verwenden wir $ wpdb-> query, um in die neue Tabelle zu schreiben. Wir führen diese Funktion jedes Mal aus, wenn das Plugin aktiviert wird.

 prefix.'popular_by_views '; // Kombiniere das Präfix mit unserer Tabellenname-Funktion ppbv_create_table () global $ wpdb, $ ppbv_tablename; // global aufrufen, damit wir sie innerhalb der Funktion $ ppbv_table = $ wpdb-> get_results verwenden können ("SHOW TABLES LIKE '$ ppbv_tablename'", ARRAY_N); // gibt null zurück, wenn keine Ergebnisse vorliegen if (is_null ($ ppbv_table)) // wenn keine Tabelle vorhanden ist $ create_table_sql = "CREATE TABLE $ ppbv_tablename (ID BIGINT (50) NOT NULL AUTO_INCREMENT, post_id VARCHAR (255) ) NOT NULL, zeigt BIGINT (50) NOT NULL, PRIMARY KEY (id), EINZIGARTIG (id)); "; // Seien Sie vorsichtig mit der SQL-Syntax, es kann VERY finiky $ wpdb-> query ($ create_table_sql) sein; // SQL-Anweisung in der Datenbank ausführen register_activation_hook (__ FILE __, 'ppbv_create_table'); // führe die Funktion 'ppbv_create_table' bei der Plugin-Aktivierung aus?>

Schritt 2. Daten erfassen

Das nächste, was wir jetzt tun müssen, nachdem wir eine Tabelle zum Speichern unserer Daten haben, ist das Fangen unserer Daten. Wir erstellen eine neue Funktion (ppbv_page_viewed) dass wir uns an die wp_head Hook, damit es bei jedem Laden der Seite läuft. In dieser Funktion werden wir zwei Dinge tun, nachdem wir überprüft haben, ob sich die aktuelle Seite bereits in der Datenbank befindet: Erhöhen Sie ihre Ansichten um eins, oder fügen Sie sie der Datenbank hinzu, falls sie nicht in der Datenbank ist. Um herauszufinden, ob sich die aktuelle Seite bereits in der Datenbank befindet, verwenden wir die $ post Objekt, um die "post_ID" abzurufen. Dieser Schritt ist eigentlich ganz einfach, weil wir keine komplizierten Daten sammeln. Die Kommentare im Code geben in diesem Prozess Schritt für Schritt detailliert an.

 function ppbv_page_viewed () if (is_single () &&! is_page ()) // nur auf Posts ausgeführt und nicht auf Seiten global $ wpdb, $ post, $ ppbv_tablename; // global zur Verwendung in funciton aufrufen $ wpdb-> flush (); // das DB-Interface mit $ data = $ wpdb-> get_row clense ("SELECT * FROM $ ppbv_tablename WHERE post_id =" $ post-> ID "", ARRAY_A); // Abrufen der Datenzeile mit der übereinstimmenden Beitrags-ID if (! is_null ($ data)) // wenn wir eine übereinstimmende Datenzeile haben $ new_views = $ data ['views'] + 1; // die Ansichten um 1 $ wpdb-> query erhöhen ("UPDATE $ ppbv_tablename SET Views =" $ new_views "WHERE post_id =" $ post-> ID ";"); // aktualisiere die Datenzeile mit den neuen Ansichten $ wpdb-> flush (); // clense the DB interface else // wenn wir keine übereinstimmende Datenzeile haben (niemand hat den Beitrag bisher angesehen) $ wpdb-> query ("INSERT INTO $ ppbv_tablename (post_id, views) VALUES (' $ post-> ID ',' 1 '); "); // füge eine neue Datenzeile in den DB mit der Post-ID und 1 view hinzu $ wpdb-> flush (); // die DB-Schnittstelle clense add_action ('wp_head', 'ppbv_page_viewed'); // hängen Sie ppbv_page_viewed an den WP_head-Hook an 

Schritt 3. Erstellen des Admin-Widgets

Als Nächstes verwenden wir diese Daten, die wir gerade unserer Datenbank hinzugefügt haben, um eine geordnete Liste in einem Admin Area Dashboard-Widget zu erstellen. Dieser Prozess umfasst zwei Funktionen: die erste (ppbv_admin_widget) um alles im Widget zu generieren, und zweitens (ppbv_add_admin_widget), um das Widget selbst zu erstellen. Beginnen wir mit der Inhaltsfunktion pppbv_admin_widget. Erstens: Da wir eine geordnete Liste erstellen, geben wir die ersten Tags dafür aus. Dann werden wir die $ wpdb- und $ ppbv_tablename -Vars globalisieren, sodass wir auf die Datenbank zugreifen und die zehn am häufigsten betrachteten Post-IDs abrufen können. Dann führen wir das zurückgegebene Array durch für jeden Anweisung, und verwenden Sie jede einzelne ID, um ein Listenelement und einen Link zu dieser Seite zu erstellen, und drucken Sie auch die Ansichten aus (formatiert mit number_format, um das Lesen zu erleichtern).

 Funktion ppbv_admin_widget () echo "
    "; // Eine ungeordnete Liste global erstellen $ wpdb, $ ppbv_tablename; // Aufruf global für die Verwendung in der Funktion $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY-Ansichten DESC LIMIT 0,10 ", ARRAY_N); // Sortieren Sie unsere Tabelle nach der größten bis kleinsten Ansicht, und holen Sie sich dann die ersten 10 (dh die 10 meistgesehenen) foreach ($ popular als $ post) // durch das zurückgelieferte Array populärer Posts $ ID = $ post [1]; // Speichern Sie die Daten in einer Variablen, um einige Zeichen zu speichern, und halten Sie den Code-Cleaner $ views = number_format ($ post [2]); // number_format fügt die Kommas an den richtigen Stellen für Zahlen hinzu (Beispiel: 12543) bis 12.543) $ post_url = get_permalink ($ ID); // Die URL des aktuellen Posts in der Schleife abrufen $ title = get_the_title ($ ID); // Den Titel des aktuellen Posts im Schleifenecho abrufen "
  1. $ title - $ views -Ansichten
  2. "; // die Informationen in einem Listenelement ausgeben // das Schleifenecho beenden"
"; // die ungeordnete Liste schließen

Nun, da wir Inhalte generieren, erstellen wir das Widget. In der Erstellungsfunktion, ppbv_add_admin_widget, rufen wir eine andere Funktion auf, die in WordPress enthalten ist: wp_add_dashboard_widget. Alles, was wir tun müssen, ist, wp_add_dashboard_widget die folgenden Parameter zu geben: [ID des Containers], [Titel im Container], [Inhaltsfunktion] (unsere füllt als solche: 'popular_by_views', 'Beliebteste Beiträge nach Ansichten', 'ppbv_admin_widget '). Das letzte, was wir tun müssen, ist, unsere Erstellungsfunktion an den Haken wp_dashboard_setup anzuschließen.

 function ppbv_add_admin_widget () wp_add_dashboard_widget ('popular_by_views', 'Die beliebtesten Beiträge nach Ansichten', 'ppbv_admin_widget'); // erstellt ein Widget für den Adminbereich || wp_add_dashboard_widget ([id von div], [title in div], [Funktion, die innerhalb von div ausgeführt werden soll)) add_action ('wp_dashboard_setup', 'ppbv_add_admin_widget'); // ppbv_add_admin_widget an wp_dashboard_setup anhängen 

Und jetzt haben wir ein funktionierendes Dashboard-Widget für Administratoren.


Schritt 4. Erstellen des Sidebar-Widget

Das Erstellen eines Sidebar-Widgets ist ziemlich schmerzlos. Leider sind bestimmte Teile nicht gut dokumentiert (wie sie einheitlich gemacht werden sollen), aber wir werden das behandeln. Beginnen wir mit dem Schreiben einer neuen Funktion (ppbv_display_widget) und innerhalb davon werden wir unsere Content - Funktion aus dem Admin - Widget kopieren (ich schlage vor, die globalen Aufrufe an die Spitze außerhalb des

    Echo der Funktion zur besseren Klarheit später). Als nächstes registrieren Sie unser Widget in WordPress über wp_register_sidebar_widget (Parameter sind: [ID des Containers], [Titel auf der Widget-Seite], [Inhaltsfunktion] || 'popular_by_views', 'Beliebteste Beiträge nach Ansichten', 'ppbv_display_widget').

     Funktion ppbv_display_widget () global $ wpdb, $ ppbv_tablename; // Aufruf von global zur Verwendung im Funktionsecho "
    "; // ein Containerecho erstellen"

    Am beliebtesten nach Ansichten

    "; // schreibe das Titelecho"
      "; // Eine geordnete Liste erstellen $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY-Ansichten DESC LIMIT 0,10 ", ARRAY_N); foreach ($ popular als $ post) // loop durch das zurückgegebene Array populärer Posts $ ID = $ post [1]; // Speichern Sie die Daten in einer Variablen, um einige Zeichen zu speichern, und behalten Sie den Code-Cleaner $ views = number_format ($ post [2]); // number_format hinzu die Kommas an den richtigen Stellen für Zahlen (zB: 12543 bis 12.543) $ post_url = get_permalink ($ ID); // Die URL des aktuellen Posts in der Schleife abrufen $ title = get_the_title ($ ID); // Den Titel abrufen des aktuellen Beitrags im Schleifenecho "
    1. $ title - $ views -Ansichten
    2. "; // die Informationen in einem Listenelement ausgeben // das Schleifenecho beenden"
    "; // das geordnete Listenecho schließen"
    "; // schließe den Container wp_register_sidebar_widget ('popular_by_views', 'Beliebteste Posts nach Ansichten', 'ppbv_display_widget'); // // Das Widget zum Auswahlmenü hinzufügen || wp_register_sidebar_widget ([ID der Option], [Titel der Option] die Option], [Funktion, die vom Widget ausgeführt werden soll]))

    Dies ist eigentlich das Nötigste, was Sie für ein Sidebar-Widget tun müssen, aber für 90% aller dynamischen Sidebars gelten bestimmte Einstellungen für den Stil der Widgets. Nehmen Sie also unser Widget an diese Einstellungen an. Als Erstes müssen wir unserer ppbv_display_widget-Funktion einen Parameter hinzufügen, $ args. Durch das Hinzufügen dieses Parameters in die Funktion, indem wir die Funktion extract verwenden, erhalten wir Zugriff auf verschiedene Variablen, mit denen unser Plugin genauso gestaltet werden kann wie die übrigen Widgets in der Seitenleiste.

    "Wir müssen für $ args keinen Input bereitstellen, WordPress erledigt das für uns."

    Dank $ args und extract haben wir nun Zugriff auf die folgenden Variablen, die wir zur Gestaltung unseres Widgets verwenden können:

    • $ before_widget
    • $ after_widget
    • $ before_title
    • $ after_title
     Funktion ppbv_display_widget ($ args) global $ wpdb, $ ppbv_tablename; // Aufruf von global zur Verwendung im Funktionsextrakt ($ args); // gibt uns die Standardeinstellungen der Widgets echo $ before_widget; // gibt den Container für das Widget zurück || aus $ args echo $ before_title erhalten. "Beliebteste Ansichten". $ after_title; // gibt den Titel des Widgets zurück || $ before_title / $ after_title aus $ args echo "
      "; // Eine geordnete Liste erstellen $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY-Ansichten DESC LIMIT 0,10 ", ARRAY_N); // Unsere Tabelle nach größten bis kleinsten Ansichten sortieren und dann erhalten die ersten 10 (dh die Top 10 der meistgesehenen) foreach ($ popular als $ post) // Schleife durch das zurückgegebene Array der populären Posts $ ID = $ post [1]; // die Daten in einer Variablen speichern, um a zu speichern einige Zeichen und halten Sie den Code-Reiniger $ views = number_format ($ post [2]); // number_format fügt die Kommas an den richtigen Stellen für Zahlen hinzu (z. B .: 12543 bis 12.543) $ post_url = get_permalink ($ ID); // get die URL des aktuellen Beitrags in der Schleife $ title = get_the_title ($ ID); // den Titel des aktuellen Beitrags im Schleifenecho abrufen "
    1. $ title - $ views -Ansichten
    2. "; // die Informationen in einem Listenelement ausgeben // das Schleifenecho beenden"
    "; // die geordnete Liste schließen echo $ after_widget; // den Container schließen || von $ args erhalten

    Schritt 5. Die Nicht-Widget-Funktion

    Nicht jeder, der dieses Plugin verwendet, wird das Widget verwenden wollen. Es ist daher unerlässlich, dass wir ihnen eine andere Methode zur Anzeige unserer Liste zur Verfügung stellen. Zum Glück ist das so einfach wie das Klonen unserer ppbv_display_widget-Funktion, das Entfernen der Widget-Teile und das Ersetzen durch hardcoded Standard-HTML.

     function ppbv_display () global $ wpdb, $ ppbv_tablename; // Aufruf von global zur Verwendung im Funktionsecho "
    "; // ein Containerecho erstellen"

    Am beliebtesten nach Ansichten

    "; // schreibe das Titelecho"
      "; // Eine geordnete Liste erstellen $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY-Ansichten DESC LIMIT 0,10 ", ARRAY_N); foreach ($ popular als $ post) // loop durch das zurückgegebene Array populärer Posts $ ID = $ post [1]; // Speichern Sie die Daten in einer Variablen, um einige Zeichen zu speichern, und behalten Sie den Code-Cleaner $ views = number_format ($ post [2]); // number_format hinzu die Kommas an den richtigen Stellen für Zahlen (zB: 12543 bis 12.543) $ post_url = get_permalink ($ ID); // Die URL des aktuellen Posts in der Schleife abrufen $ title = get_the_title ($ ID); // Den Titel abrufen des aktuellen Beitrags im Schleifenecho "
    1. $ title - $ views -Ansichten
    2. "; // die Informationen in einem Listenelement ausgeben // das Schleifenecho beenden"
    "; // das geordnete Listenecho schließen"
    "; // schließe den Container

    Fazit

    Das ist es Leute, Sie haben Ihr eigenes WordPress-Plugin "Most Popular by Views" erstellt. Nicht zu schwer war es?

    Wenn Sie die Kunst der Entwicklung des WordPress-Plugins beherrschen, besuchen Sie CodeCanyon.net und beginnen Sie mit dem Verkauf Ihrer Plugins für den Gewinn!

    Endgültigen Quellcode mit Kommentar anzeigen?

     prefix.'popular_by_views '; // Kombiniere das Präfix mit unserer Tabellenname-Funktion ppbv_create_table () global $ wpdb, $ ppbv_tablename; // global aufrufen, damit wir sie innerhalb der Funktion $ ppbv_table = $ wpdb-> get_results verwenden können ("SHOW TABLES LIKE '$ ppbv_tablename'", ARRAY_N); // gibt null zurück, wenn keine Ergebnisse vorliegen if (is_null ($ ppbv_table)) // wenn keine Tabelle vorhanden ist $ create_table_sql = "CREATE TABLE $ ppbv_tablename (ID BIGINT (50) NOT NULL AUTO_INCREMENT, post_id VARCHAR (255) ) NOT NULL, zeigt BIGINT (50) NOT NULL, PRIMARY KEY (id), EINZIGARTIG (id)); "; // Seien Sie vorsichtig mit der SQL-Syntax, es kann VERY finiky $ wpdb-> query ($ create_table_sql) sein; // führe die SQL-Anweisung in der Datenbank aus $ wpdb-> flush (); // die DB-Schnittstelle clense register_activation_hook (__ FILE __, 'ppbv_create_table'); // führe die Funktion 'ppbv_create_table' bei der Plugin-Aktivierungsfunktion aus ppbv_page_viewed () if (is_single () &&! is_page ()) // nur auf Posts und nicht auf Seiten laufen global $ wpdb, $ post, $ ppbv_tablename; // global zur Verwendung in funciton aufrufen $ wpdb-> flush (); // das DB-Interface mit $ data = $ wpdb-> get_row clense ("SELECT * FROM $ ppbv_tablename WHERE post_id =" $ post-> ID "", ARRAY_A); // Abrufen der Datenzeile mit der übereinstimmenden Beitrags-ID if (! is_null ($ data)) // wenn wir eine übereinstimmende Datenzeile haben $ new_views = $ data ['views'] + 1; // die Ansichten um 1 $ wpdb-> query erhöhen ("UPDATE $ ppbv_tablename SET Views =" $ new_views "WHERE post_id =" $ post-> ID ";"); // aktualisiere die Datenzeile mit den neuen Ansichten $ wpdb-> flush (); // clense the DB interface else // wenn wir keine übereinstimmende Datenzeile haben (niemand hat den Beitrag bisher angesehen) $ wpdb-> query ("INSERT INTO $ ppbv_tablename (post_id, views) VALUES (' $ post-> ID ',' 1 '); "); // füge eine neue Datenzeile in den DB mit der Post-ID und 1 view hinzu $ wpdb-> flush (); // die DB-Schnittstelle clense add_action ('wp_head', 'ppbv_page_viewed'); // ppbv_page_viewed an die wp_head-Hook-Funktion anhängen ppbv_admin_widget () echo "
      "; // Eine ungeordnete Liste global erstellen $ wpdb, $ ppbv_tablename; // Aufruf global für die Verwendung in der Funktion $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY-Ansichten DESC LIMIT 0,10 ", ARRAY_N); // Sortieren Sie unsere Tabelle nach der größten bis kleinsten Ansicht, und holen Sie sich dann die ersten 10 (dh die 10 meistgesehenen) foreach ($ popular als $ post) // durch das zurückgelieferte Array populärer Posts $ ID = $ post [1]; // Speichern Sie die Daten in einer Variablen, um einige Zeichen zu speichern, und halten Sie den Code-Cleaner $ views = number_format ($ post [2]); // number_format fügt die Kommas an den richtigen Stellen für Zahlen hinzu (Beispiel: 12543) bis 12.543) $ post_url = get_permalink ($ ID); // Die URL des aktuellen Posts in der Schleife abrufen $ title = get_the_title ($ ID); // Den Titel des aktuellen Posts im Schleifenecho abrufen "
    1. $ title - $ views -Ansichten
    2. "; // die Informationen in einem Listenelement ausgeben // das Schleifenecho beenden"
    "; // Die ungeordnete Liste schließen Funktion ppbv_add_admin_widget () wp_add_dashboard_widget ('popular_by_views', 'Beliebteste Posts nach Ansichten', 'ppbv_admin_widget'); // erstellt ein Widget für den Verwaltungsbereich || wp_add_d_dashboard_widget ([id of div] , [title in div], [Funktion, die innerhalb von div ausgeführt werden soll]) add_action ('wp_dashboard_setup', 'ppbv_add_admin_widget'); // hängt ppbv_add_admin_widget an die Funktion wp_dashboard_setup an ppbv_display_widget ($ args) global $ proDb. Aufruf global für die Verwendung im Funktionsextrakt ($ args); // gibt uns die Standardeinstellungen der Widgets echo $ before_widget; // echos den Container für das Widget ||, der aus $ args echo $ before_title abgerufen wird. "Beliebteste Ansichten". $ after_title; // gibt den Titel des Widget zurück || $ before_title / $ after_title aus $ args echo "
      "; // Eine geordnete Liste erstellen $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY-Ansichten DESC LIMIT 0,10 ", ARRAY_N); // Unsere Tabelle nach größten bis kleinsten Ansichten sortieren und dann erhalten die ersten 10 (dh die Top 10 der meistgesehenen) foreach ($ popular als $ post) // Schleife durch das zurückgegebene Array der populären Posts $ ID = $ post [1]; // die Daten in einer Variablen speichern, um a zu speichern einige Zeichen und halten Sie den Code-Reiniger $ views = number_format ($ post [2]); // number_format fügt die Kommas an den richtigen Stellen für Zahlen hinzu (z. B .: 12543 bis 12.543) $ post_url = get_permalink ($ ID); // get die URL des aktuellen Beitrags in der Schleife $ title = get_the_title ($ ID); // den Titel des aktuellen Beitrags im Schleifenecho abrufen "
    1. $ title - $ views -Ansichten
    2. "; // die Informationen in einem Listenelement ausgeben // das Schleifenecho beenden"
    "; // die geordnete Liste schließen echo $ after_widget; // den Container schließen || aus $ args wp_register_sidebar_widget ('popular_by_views', 'Beliebteste Beiträge nach Ansichten', 'ppbv_display_widget'); // das Widget zum hinzufügen select menu || wp_register_sidebar_widget ([ID der Option], [Titel der Option], [vom Widget auszuführende Funktion])) Funktion ppbv_display () global $ wpdb, $ ppbv_tablename; // Aufruf von global zur Verwendung in function Echo "
    "; // ein Containerecho erstellen"

    Am beliebtesten nach Ansichten

    "; // schreibe das Titelecho"
      "; // Eine geordnete Liste erstellen $ popular = $ wpdb-> get_results (" SELECT * FROM $ ppbv_tablename ORDER BY-Ansichten DESC LIMIT 0,10 ", ARRAY_N); foreach ($ popular als $ post) // loop durch das zurückgegebene Array populärer Posts $ ID = $ post [1]; // Speichern Sie die Daten in einer Variablen, um einige Zeichen zu speichern, und behalten Sie den Code-Cleaner $ views = number_format ($ post [2]); // number_format hinzu die Kommas an den richtigen Stellen für Zahlen (zB: 12543 bis 12.543) $ post_url = get_permalink ($ ID); // Die URL des aktuellen Posts in der Schleife abrufen $ title = get_the_title ($ ID); // Den Titel abrufen des aktuellen Beitrags im Schleifenecho "
    1. $ title - $ views -Ansichten
    2. "; // die Informationen in einem Listenelement ausgeben // das Schleifenecho beenden"
    "; // das geordnete Listenecho schließen"
    "; // schließe den Container?>