Einfaches WordPress-Plugin, um Ihren Lieblingsautoren zu folgen

Die unglaubliche Wachstumsrate von WordPress hat die Entwicklung von Websites vereinfacht. Beliebte Tutorialseiten wie das Tuts + -Netzwerk verwenden WordPress, um ihre Websites mit Strom zu versorgen. Diese Websites bieten täglich Hunderte neuer Tutorials, Artikel und Updates. So ist es auch mit Ihrem RSS-Feed-Reader nicht einfach, jeden Artikel zu verfolgen. Ihr Feedreader wird schnell mit neuen gefüllt und als Leser interessieren wir uns nur für bestimmte Themen. Im Idealfall brauchen wir also eine Methode, die Artikel bereitstellt, an denen wir interessiert sind. Im Allgemeinen sind Autoren auf bestimmte Bereiche spezialisiert. Wenn Darren Rowse einen Artikel über das Bloggen schreibt, wird jeder es lesen wollen. Ebenso haben wir Lieblingsautoren, die wir jedes Mal gerne lesen würden.

In diesem Tutorial werde ich also ein einfaches WordPress-Plugin erstellen, mit dem Sie Ihre Lieblingsautoren abonnieren können. Sie erhalten jedes Mal eine E-Mail, wenn Ihr Lieblingsautor einen Beitrag veröffentlicht. Daher werden Sie die wichtigen Artikel nie wieder verpassen.


Was entwickeln wir heute?

Unser Plugin ermöglicht es Benutzern grundsätzlich, Benachrichtigungen über neue Beiträge von abonnierten Autoren zu erhalten. Im Folgenden werden die Features und Komponenten beschrieben, die wir während des Tutorials entwickeln werden:

  • Erstellen eines Shortcodes, um alle Autoren aufzulisten
  • Benutzern erlauben, Autoren zu folgen und deren Entwicklung aufzuheben
  • E-Mails senden, wenn ein neuer Beitrag veröffentlicht wird

Schritt 1 Erstellen der Plugin-Datei

Ich werde diesen Schritt nicht im Detail erklären, da Sie möglicherweise bereits wissen, dass eine WordPress-Plugin-Datei oben einen Kommentarbereich haben muss, um die Plugin-Details zu identifizieren. Ich habe das Plugin benannt WP Folgen Sie den Autoren. Erstellen Sie also ein neues Verzeichnis in der / wp-content / plugins Verzeichnis aufgerufen WP-Follow-Autoren und das erstellen index.php Datei mit folgenden Details:

 

Schritt 2 Erstellen von Tabellen für die Plugin-Aktivierung

Wir benötigen zwei Datenbanktabellen für dieses Plugin. Ich benenne sie wp_author_subscribe und wp_author_followers (woher wp_ wird tatsächlich das konfigurierte DB-Präfix sein). Der Tisch wp_author_subscribe behält die E-Mail-Adresse des Abonnenten, den Aktivierungsstatus und die Liste der befolgten Autoren bei. Das wp_author_followers Die Tabelle enthält die Autoren-ID und die Liste der Anhänger. Wir müssen diese Tabellen für die Plugin-Aktivierung erstellen. Betrachten wir den folgenden Code.

 Abfrage ("DROP TABLE IF EXISTS $ wpdb-> Präfix author_subscribe"); $ sql1 = "CREATE TABLE $ wpdb-> Präfix author_subscribe (id int (11) NOT NULL AUTO_INCREMENT, Aktivierungscode varchar (255) NOT NULL, E-Mail-Varchar (75) NOT NULL, Status int (11) NOT NULL, follow_authors-Text NOT NULL, PRIMARY KEY (id)) ENGINE = InnoDB AUTO_INCREMENT = 1; "; dbDelta ($ sql1); $ sql2 = ("CREATE TABLE $ wpdb-> Präfix) author_followers (id int (11) NOT NULL AUTO_INCREMENT, author_id int (11) NOT NULL, Followers_list-Text NOT NULL, Primärschlüssel (id)) ENGINE = InnoDB AUTO_INCREMENT = 1 ""; dbDelta ($ sql2);  register_activation_hook (__ FILE__, 'wp_authors_tbl_create'); ?>
  • Wir können eine Funktion erstellen, die bei der Plugin-Aktivierung mit aufgerufen wird register_activation_hook. Hier sollten wir unsere Datenbanktabellen erstellen.
  • Datenbanktabellen können mit einer benutzerdefinierten WordPress-Abfrage erstellt werden. Aber der empfohlene Weg ist die Verwendung von dbDelta Funktion zum Ausführen der SQL-Abfrage wie im obigen Code gezeigt.

Schritt 3 Kurzcode zur Anzeige der Autorenliste

Als Nächstes müssen wir die Liste der verfügbaren Autoren anzeigen, damit die Benutzer folgen können. Ich werde also einen Shortcode erstellen, mit dem Sie die Autorenliste auf einer beliebigen Seite anzeigen können. Beginnen wir mit dem Erstellen der Shortocde.

 

Ich habe einen Shortcode namens erstellt Mitwirkende und eine Funktion aufgerufen Mitwirkende um die Autorenliste anzuzeigen. Der gesamte Code zur Anzeige von Autoren befindet sich in dieser Funktion. Sie müssen eine spezielle Seite erstellen, um Ihre Mitwirkenden zu zeigen. Sie können es so nennen, wie Sie es gerne hätten. Dann geben Sie den Kurzcode ein [Mitwirkende] Klicken Sie auf die Schaltfläche "Veröffentlichen". Noch haben wir keinen Code innerhalb der Shortcode-Funktion. Schauen wir uns das mal an.

Autorenliste anzeigen

Bei einigen Blogs können sich Benutzer registrieren. Sie werden im Allgemeinen als Abonnenten erstellt, und Abonnenten können keine Beiträge erstellen. Wenn wir also die Benutzerliste anzeigen, müssen wir sicherstellen, dass die Benutzer mit der Möglichkeit verfasst werden, Beiträge zu erstellen. Schauen wir uns den Code unten an.

 '; foreach ($ authors als $ author) if (user_can ($ author-> ID, 'publish_posts')) $ WritersList. = '
'. get_avatar ($ author-> ID). '

'. get_the_author_meta ('display_name', $ author-> ID). '

'. get_the_author_meta ('description', $ author-> ID). '

'; $ WritersList. = '
'; ?>
  • Wir bekommen alle Benutzer, die das benutzen get_users Funktion.
  • Beim Durchlaufen der Benutzerliste müssen wir dann prüfen, ob der Benutzer Beiträge mit dem veröffentlichen darf user_can Funktion.
  • Wir erstellen HTML-Code für Details der Autoren, die Beiträge veröffentlichen können. Ich habe das Autorenbild mit Gravatar, Anzeigename und Beschreibung des Autors angezeigt.
  • Als Nächstes erstellen wir eine Schaltfläche, um den Autoren zu folgen. Das Wichtigste hier ist, ich habe ein angegeben Datenautor Attribut und setzen Sie die ID des Autors.

Jetzt haben wir den HTML-Code für die Anzeige von Autoren. Schauen wir uns also den Code zum Anzeigen des Abonnementformulars an.

  
Folgen Sie den WP-Autoren
'. $ actStatus. '
Geben sie ihre E-Mail Adresse ein
'. $ AuthorsList. '
'; Echo $ -Ausgabe; ?>

In diesem einfachen HTML-Formular haben wir ein Textfeld, in das ein Benutzer seine E-Mail-Adresse eingeben kann. Dann haben wir 2 Buttons zum Abonnieren und Laden der folgenden Autorenliste. Ich werde AJAX in diesem Plugin verwenden. Daher spielen die ID und Klassen von HTML-Elementen eine entscheidende Rolle. Wenn Sie die eigentliche Plugin-Datei überprüfen, werden Sie feststellen, dass ich den Code oben nicht erklärt habe Mitwirkende Funktion. Sie dient zur Verifizierung der Aktivierung und wird später erläutert. Jetzt haben wir das vollständige Formular mit der Liste der Autoren und es sieht aus wie das Übungsbild oben.


Schritt 4 Konfigurieren von JavaScript und CSS

Nun beginnt der eigentliche Funktionsteil und wir benötigen einige CSS-Stile und Javascript-Dateien, um unsere Funktionalität zu unterstützen. Der folgende Code zeigt Ihnen, wie Sie die erforderlichen Skripts und Stile auf die empfohlene Weise einfügen.

  admin_url ('admin-ajax.php'), 'ajaxNonce' => wp_create_nonce ('follow-nonce'), 'currentURL' => $ _SERVER ['REQUEST_URI']); wp_localize_script ('followjs', 'ajaxData', $ config_array);  add_action ('wp_enqueue_scripts', 'apply_wp_author_scripts'); ?>

Schritt 5 Abonnieren Sie das Plugin

Um Autoren folgen zu können, muss ein Benutzer sich mit seiner E-Mail-Adresse anmelden. Sobald ein Benutzer seine E-Mail-Adresse eingibt und auf die Schaltfläche "Abonnieren" klickt, wird er den Dienst abonniert und eine E-Mail wird gesendet, um den Dienst zu aktivieren. Mal sehen, was passiert, wenn auf die Schaltfläche "Abonnieren" geklickt wird.

Erstellen einer AJAX-Anfrage für das Abonnieren

 

Ich habe eine jQuery-Funktion hinzugefügt, die das Live-Ereignis verwendet, das aufgerufen wird, wenn die Schaltfläche "Abonnieren" (#subscribeAuthors) wird angeklickt. Sie prüft anhand eines regulären Ausdrucks, ob die E-Mail gültig ist. Dann erstellen wir die AJAX-Anfrage, um die Funktion subscribe aufzurufen. Ich erkläre die AJAX-Anfrage hier.

AJAX-Anfrage in WordPress bearbeiten

Um AJAX-Anfragen vom Plugin abzuwickeln, können wir folgenden Code verwenden:

 

Es gibt Aktionen genannt wp_ajax_nopriv und wp_ajax um AJAX-Anfragen für Benutzer abzuwickeln, die abgemeldet bzw. angemeldet sind. Auf diese Aktionen folgt ein Unterstrich und die Aktion, die wir in der AJAX-Anforderung aus der JS-Datei definiert haben. Also in diesem Fall die subscribe_to_wp_authors Aktion wird das aufrufen subscribe_to_wp_authors Funktion.

"Stellen Sie sicher, dass Sie verwenden sterben() am Ende jeder AJAX-Funktion in Ihrem PHP-Code, da WordPress zurückkehrt 0 oder -1 abhängig vom Ergebnis der AJAX-Anforderung, die Fehler in JSON-Zeichenfolgen verursachen kann. "

Mal sehen, was in der Funktion passiert:

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix) author_subscribe wobei email =% s", $ subscriber_email)); if (count ($ email_result) == '0') $ activation_code = generate_random_act_code (); $ result = $ wpdb-> query ($ wpdb-> vorbereiten ("INSERT INTO $ wpdb-> Präfix author_subscribe (E-Mail, Aktivierungscode, Status) WERTE (% s,% s,% s)", $ subscriber_email, $ Aktivierungscode, "nicht abonniert")); $ activation_link = add_query_arg ('confirm-follow', $ activation_code, get_site_url (). $ _POST ['url']); if ($ result) if (wp_mail ($ subscriber_email, "WP Author Subscription", "Klicken Sie zum Aktivieren auf $ activation_link.")) echo json_encode (array ("success" => "Bitte überprüfen Sie die E-Mail auf Aktivierungslink.") );  else echo json_encode (array ("error" => "Email Error."));  else echo json_encode (array ("error" => "E-Mail ist bereits vorhanden."));  else echo json_encode (array ("error" => "Bitte gültige E-Mail-Adresse eingeben"));   sterben(); ?>

Sobald der Benutzer in der E-Mail auf den Aktivierungslink klickt, wird er mit einer Aktivierungserfolgsmeldung zurück zur Website geleitet und seine E-Mail-Adresse wird in das Textfeld geladen. Die Aktivierungsprüfung wird oben in der Shortcode-Funktion durchgeführt. Ich habe die Erklärung zuvor weggelassen, jetzt ist es an der Zeit, sich diesen Code in der Mitwirkende Funktion.

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe wobei der Aktivierungscode =% s und der Status = 0 ist"), $ activationCode); if (count ($ activationCheck)! = 0) $ activationResult = $ wpdb-> query ($ wpdb-> vorbereiten ("update $ wpdb-> Präfix author_subscribe set status = 1, wobei Aktivierungscode =% s"), $ Aktivierungscode); if ($ activationResult) $ confirmEmail = $ activationCheck [0] -> E-Mail; $ actStatus = "Aktivierung erfolgreich"; $ actClass = "Erfolg";  else $ actStatus = "Aktivierung fehlgeschlagen"; $ actClass = "Fehler"; ?>

Ein Benutzer kann die Autorenseite direkt oder über den Bestätigungslink aufrufen. Also prüfen wir zuerst, ob die Bestätigen-Folgen In der URL steht ein Parameter zur Verfügung, um herauszufinden, ob es sich um eine Aktivierungsanforderung handelt oder nicht. Dann suchen wir in der Datenbanktabelle nach einer Aktivierung für den in der URL angegebenen Aktivierungscode. Anschließend aktualisieren wir den Aktivierungsstatus des Benutzers und zeigen die Ergebnisnachricht mit der relativen CSS-Klasse an. Damit ist der gesamte Vorgang des Abonnements abgeschlossen. Nun kann der Benutzer folgenden Autoren folgen.


Schritt 6 Folgende Autoren folgen

Nun ist die Aktivierung erfolgreich und Ihre E-Mail wird im E-Mail-Feld angezeigt. In dieser Zeit können Sie Autoren aus der Liste auswählen und auf klicken "Folgen" Taste. Mal sehen, wie ein Benutzer einem Autor folgt. Eine AJAX-Anfrage wird gestellt, sobald Sie auf den Folgen-Button eines bestimmten Autors klicken.

 

Jeder Autor hat einen Follow-Button vor seinem Namen, der eine aufgerufene CSS-Klasse enthält Folgen. Jedes Mal, wenn ein Folgeschalter angeklickt wird, wird die $ jq (". follow"). live ("click") Funktion wird ausgelöst und wir können nur die angeklickte Schaltfläche verwenden $ jq (das). Dann stellen wir wie zuvor eine neue AJAX-Anfrage mit der Aktion follow_wp_authors.

Der einzige Unterschied besteht darin, dass wir einen zusätzlichen Parameter hinzufügen author_id auf die Anfrage. Wir können die ID des Autors mit der Datenautor Attribut, das wir im Anzeigebereich definiert haben. Schauen wir uns jetzt den PHP-Code zur Bearbeitung dieser AJAX-Anfrage an.

 

Für diese AJAX-Anfrage müssen wir wie zuvor zwei neue Aktionen hinzufügen. Die Funktion follow_up_authors enthält den Code, der für das Folgen eines Autors verwendet wird. Da es keinen Grund gibt, sich wiederholenden Code immer wieder zu erklären, werde ich die notwendigen Abschnitte erläutern. Ich empfehle Ihnen, sich die Funktion in der Plugin-Datei anzusehen, während Sie das Tutorial durchlesen. Der anfängliche Teil der Funktion überprüft die Nicht-Bestätigung, überprüft die E-Mail und prüft, ob die Aktivierung in der Datenbank erfolgt. Also lasst uns vorwärts gehen.

Hinzufügen von Benutzern für Folgendes

Da wir in unserem Plugin benutzerdefinierte Tabellen verwenden, ist unsere Autorentabelle zunächst leer, auch wenn auf der Site viele Autoren vorhanden sind. Wenn ein Benutzer also für einen Autor auf die Schaltfläche Folgen klickt, können wir prüfen, ob der Autor in unserer Tabelle verfügbar ist. Wenn nicht, machen wir den ersten Eintrag, indem wir den Autor in die Tabelle einfügen. Betrachten Sie den folgenden Code:

 Ich würde; $ authorId = isset ($ _ POST ['author_id'])? $ _POST ['author_id']: "; / * * Prüfen Sie, ob der Autor existiert, und fügen Sie ein, falls noch nicht vorhanden. * / $ AuthorResult = $ wpdb-> get_results ($ wpdb-> prepare (" Wählen Sie * aus $ wpdb- > Präfix author_followers wobei author_id =% d "), $ authorId); if (count ($ authorResult) == '0') $ result = $ wpdb-> query ($ wpdb-> vorbereiten (" INSERT INTO $ wpdb-> prefix author_followers (author_id) VALUES (% d) ", $ authorId));?>

Empfangen von Benutzern, die der Liste der Autoren folgen

 befolgte_autoren; if ($ subscribedAuthorList! = ") $ subscribedAuthorList = explodieren (", ", $ subscribedAuthorList); else $ subscribedAuthorList = array (); if (! (in_array ($ authorId, $ subscribedAuthorList)) $ abonnierteAuthorList, $ authorId);?>

Autorenliste erhalten und abschließen folgen

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_followers wobei author_id =% d" ist), $ authorId); if (count ($ authorResult) == '1') if ($ authorResult [0] -> followers_list! = ") $ authorSubscribersArray = explode (", ", $ authorResult [0] -> followers_list); else $ authorSubscribersArray = array (); if (! (in_array ($ subscriberID, $ authorSubscribersArray))) array_push ($ authorSubscribersArray, $ subscriberID); // Benutzerliste, die einem bestimmten Autor folgt: $ followersList = implode ("," , $ authorSubscribersArray); // Author-Liste, gefolgt von einem bestimmten Benutzer $ subscribedAuthorList = implode (",", $ subscribedAuthorList); $ result = $ wpdb-> query ($ wpdb-> prepare ("update $ wpdb-> prefix) author_followers set followers_list =% s, wobei author_id =% d "), $ followersList, $ authorId); $ result = $ wpdb-> query ($ wpdb-> prepare (" update $ wpdb-> Präfix author_subscribe set follow_authors =% s wobei email =% s "), $ subscriptionsAuthorList, $ subscriberEmail); echo json_encode (array (" status "=>" success "));?>

Schritt 7 Autorennachfolge

Wenn dieses Plugin effektiv sein soll, müssen Benutzer möglicherweise die Funktion haben, um Autoren zu entziehen und Autoren jederzeit zu folgen. Ich werde den Prozess erläutern, in dem ein Autor nicht weiter verfolgt wird. Da es dem folgenden Prozess sehr ähnlich ist, werde ich mich wiederholende Codes in der Erklärung weglassen.

Die Schaltfläche mit allen folgenden Autoren wird als angezeigt Folgenden. Wenn Sie den Mauszeiger auf die Schaltfläche bewegen, ändert sich die Farbe des Textes Nicht folgen. Wenn Sie auf die Schaltfläche klicken, wird eine weitere AJAX-Anfrage gestellt, um den Autor 'Unfollow' zu verlassen. Da sich nur der Aktionsname vom obigen Code unterscheidet, werde ich ihn hier nicht angeben. Sie können sehen $ jq (". following"). live ("Klick", Funktion () in dem followjs Datei.

Die Funktion, die verwendet wird, um den Benutzer aufzuheben, ist unfollow_wp_authors. Dieser Code ähnelt der Follow-Author-Funktion. Wenn Sie das Plugin erweitern möchten, können Sie den allgemeinen Code in Zukunft in einer einzigen Funktion zusammenfassen. Im folgenden Abschnitt mit den Autoren haben wir den Autor zur Liste hinzugefügt, falls noch nicht vorhanden. In diesem Fall entfernen wir einfach den Autor aus der Liste, falls bereits vorhanden. Der folgende Code zeigt die Änderungen im Vergleich zur Follow-Author-Funktion.

  $ value) if ($ authorId == $ value) unset ($ subscribedAuthorList [$ key]);  foreach ($ authorSubscribersArray als $ key => $ value) if ($ subscriberID == $ value) unset ($ authorSubscribersArray [$ key]); ?>

Sie können sehen, dass wir Autoren nicht über das Array hinausschieben, sondern sie mit der unset-Funktion entfernen.


Schritt 8 Laden des Autors nach Informationen

Anfangs ist die E-Mail-Adresse leer, wenn Sie die Seite mit der Autorenliste laden, da der aktuelle Benutzer nicht identifiziert werden kann. Dann muss der Benutzer die E-Mail-Adresse eingeben und auf die Schaltfläche "Laden" klicken, um eine Liste mit den folgenden Angaben zu jedem Benutzer zu erhalten. Dies ist eine weitere AJAX-Anfrage, die den vorherigen ähnlich ist, und Sie können den Code mithilfe von sehen $ jq ("# loadFollowers"). live ("Klick", Funktion () . Ich erkläre den Ergebnisabschnitt der Anfrage, da er sich etwas von den vorherigen unterscheidet.

 

Schauen wir uns die Funktion zum Laden der folgenden Autorenliste von der Serverseite an:

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe wobei email =% s und status = 1 ist"), $ subscriber_email); if (count ($ email_result) == '1') $ subscriberID = $ email_result [0] -> id; $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare ("Wählen Sie * aus $ wpdb-> Präfix author_subscribe wobei id =% d"), $ subscriberID); if (count ($ authorResult)! = '0') $ userFollowedAuthors = $ authorResult [0] -> follow_authors; $ userFollowedAuthors = explode (",", $ userFollowedAuthors); echo json_encode (array ("Autors" => $ userFollowedAuthors));  else echo json_encode (array ("error" => "Bitte gültige E-Mail-Adresse eingeben"));   sterben(); ?>

Benutzer sind jetzt für den Dienst abonniert und können den Autoren jederzeit folgen und sie können sie nicht mehr verfolgen. Der letzte und wichtigste Teil des Tutorials besteht darin, E-Mails an Follower zu senden, wenn ein Beitrag von einem Autor veröffentlicht wird. Lass uns anfangen.


Schritt 9 Senden von E-Mails, wenn Beiträge veröffentlicht werden

Wir müssen eine Aktion auslösen, wenn ein Benutzer einen neuen Beitrag veröffentlicht. WordPress bietet eine Reihe von Aktionen, die als Post Status Transitions bezeichnet werden, um diese Funktionalität zu erreichen. Ich habe vier Übergänge eingerichtet, die ausgelöst werden könnten, wenn Sie einen Beitrag veröffentlichen.

 

Die oben genannten Aktionen rufen die notify_author_followers Funktion immer dann, wenn ein Beitrag aus einem neuen, Entwurfs-, ausstehenden oder zukünftigen Status in einen veröffentlichten Status konvertiert wird. Lass uns also E-Mails mit der notify_author_followers Funktion.

 post_author; $ authorDisplayName = get_the_author_meta ('display_name', $ PublishedPostAuthor); $horsFollowers = $ wpdb-> get_results ($ wpdb-> prepare ("select * from $ wpdb-> Präfix author_followers wobei author_id =% d"), $ PublishedPostAuthor); if (Anzahl ($ AutorsFollowers) == '1') $ AutorsFollowersList = $ AutorsFollowers [0] -> followers_list; if ($ WritersFollowersList! = ") $ WritersFollowersEmails = $ wpdb-> get_results ($ wpdb-> vorbereiten (" E-Mail aus $ wpdb-> Präfix auswählen. $ bccList = "; foreach ($ AutorsFollowersEmails als $ key => $ emailObject) $ bccList. = $ em