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.
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:
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:
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'); ?>
register_activation_hook
. Hier sollten wir unsere Datenbanktabellen erstellen.dbDelta
Funktion zum Ausführen der SQL-Abfrage wie im obigen Code gezeigt.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.
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. = ''; $ WritersList. = ''. get_avatar ($ author-> ID). ''. get_the_author_meta ('display_name', $ author-> ID). '
'. get_the_author_meta ('description', $ author-> ID). '
get_users
Funktion.user_can
Funktion.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'. $ AuthorsList. ''. $ actStatus. 'Geben sie ihre E-Mail Adresse ein
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.
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'); ?>
wp_enqueue_script ('jquery')
followjs
Welches ist im Plugin-Ordner.wp_register_style
und wp_enqueue_style
Funktionen. Es befindet sich auch im Plugin-Ordner.plugins_url
Die Funktion gibt den Pfad zum aktuellen Plugin-Ordner an. Dies ist die beste Möglichkeit, Skripte einzubinden. Einige Benutzer erhalten die URL des Plugins-Verzeichnisses und hängen den Namen des Plugin-Ordners an, um den Pfad abzurufen. Dies wird nicht empfohlen und führt zu Fehlern, wenn der Name des Plugin-Ordners geändert wird.wp_localize_script
Funktion. ajaxUrl
- Ruft den Pfad zur Ajax-Datei in WordPress ab.AjaxNonce
- Gibt zu jeder Ajax-Anfrage einen eindeutigen Schlüssel für Validierungszwecke.currentURL
- Ruft den Pfad zur aktuellen URL ab, um die Mitwirkerseite zu identifizieren.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.
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.
subscribe_to_wp_authors
.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ückkehrt0
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(); ?>
wp_verify_nonce
Funktion. Unterschiedliche Nonce-Werte bedeuten, dass die AJAX-Anfrage ungültig und verworfen werden soll.is_email
.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.
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.
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));?>
befolgte_autoren; if ($ subscribedAuthorList! = ") $ subscribedAuthorList = explodieren (", ", $ subscribedAuthorList); else $ subscribedAuthorList = array (); if (! (in_array ($ authorId, $ subscribedAuthorList)) $ abonnierteAuthorList, $ authorId);?>
befolgte_autoren
Spaltenwert in der wp_author_subscribe
Tabelle.explodieren
und prüfen Sie dann, ob der Benutzer den Autor bereits abonniert hat in_array
Funktion. Dann fügen wir die Autoren-ID in die Liste der Autoren des Benutzers ein.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 "));?>
$ authorSubscribersArray
und Zuweisen einer aufgerufenen Variablen $ followersList
$ abonnierteAuthorList
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.
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.
Folgen
und prüft, ob der Autor dem Benutzer folgt.inArray
Funktion wird dafür verwendet und kehrt zurück -1
wenn die Suchzeichenfolge nicht im Array gefunden wird.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(); ?>
wp_author_subscribe
.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.
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