Eenvoudige WordPress-invoegtoepassing om uw favoriete auteurs te volgen

De ongelooflijke groei van WordPress heeft de ontwikkeling van websites vereenvoudigd. Populaire tutorials zoals het Tuts + -netwerk gebruiken WordPress om hun websites van stroom te voorzien. Deze websites bieden dagelijks honderden nieuwe handleidingen, artikelen en updates. Dus bijhouden van elk artikel is niet eenvoudig, zelfs niet met uw RSS-feedlezer. Je feedlezer zal snel gevuld zijn met nieuwe en als lezer zijn we alleen geïnteresseerd in bepaalde onderwerpen. Dus idealiter hebben we een methode nodig die artikelen bevat waarin we geïnteresseerd zijn. Over het algemeen zijn auteurs gespecialiseerd in specifieke gebieden. Als Darren Rowse een artikel schrijft over bloggen, wil iedereen het lezen. Op dezelfde manier hebben we favoriete auteurs die we elke keer willen lezen.

Dus in deze tutorial ga ik een eenvoudige WordPress plugin maken waarmee je je kunt abonneren op je favoriete auteurs. Je krijgt een e-mail wanneer je favoriete auteur een bericht publiceert. Vandaar dat u de belangrijke artikelen nooit meer zult missen.


Wat ontwikkelen we vandaag?

Onze plug-in zorgt ervoor dat gebruikers in principe meldingen over nieuwe berichten van geabonneerde auteurs kunnen ontvangen. Hieronder volgen de functies en componenten die we zullen ontwikkelen tijdens de tutorial:

  • Een shortcode maken om alle auteurs te vermelden
  • Gebruikers toestaan ​​auteurs te volgen en niet meer te volgen
  • Stuur e-mails wanneer een nieuw bericht is gepubliceerd

Stap 1 Het invoegbestand maken

Ik ga deze stap niet in detail uitleggen, omdat je misschien al weet dat een WordPress plugin-bestand bovenaan een sectie met reacties moet hebben om de details van de plug-in te identificeren. Ik heb de plugin genoemd WP Auteurs volgen. Dus maak een nieuwe map aan in de / Wp-content / plugins map genoemd wp-follow-auteurs en maak de index.php bestand met de volgende details:

 

Stap 2 Tabellen aanmaken over activering van plug-ins

We hebben twee databasetabellen nodig voor deze plug-in. Ik ben ze aan het benoemen wp_author_subscribe en wp_author_followers (waar wp_ is eigenlijk het geconfigureerde db-voorvoegsel). De tafel wp_author_subscribe houdt de e-mail van de abonnees, de activeringsstatus en de lijst van de gevolgde auteurs. De wp_author_followers tabel bevat de auteurs-id en lijst met volgers. We moeten deze tabellen aanmaken over activering van plug-ins. Laten we dus de volgende code overwegen.

 query ("DROP TABLE IF EXISTS $ wpdb-> prefix author_subscribe"); $ sql1 = "MAAK TAFEL $ wpdb-> prefix author_subscribe (id int (11) NOT NULL AUTO_INCREMENT, activation_code varchar (255) NOT NULL, email varchar (75) NOT NULL, status int (11) NOT NULL, gevolgd_authors tekst NOT NULL, PRIMARY KEY (id)) MOTOR = InnoDB AUTO_INCREMENT = 1; "; dbDelta ($ sql1); $ sql2 = ("MAAK TAFEL $ wpdb-> prefix author_followers (id int (11) NOT NULL AUTO_INCREMENT, author_id int (11) NOT NULL, volgers_lijst tekst NOT NULL, PRIMARY KEY (id)) ENGINE = InnoDB AUTO_INCREMENT = 1 ; "); dbDelta ($ sql2);  register_activation_hook (__ FILE__, 'wp_authors_tbl_create'); ?>
  • We kunnen een functie maken die wordt aangeroepen in plugin-activering met register_activation_hook. Dit is waar we onze databasetabellen zouden moeten maken.
  • Databasetabellen kunnen worden gemaakt met behulp van een aangepaste WordPress-query. Maar de aanbevolen manier is om de dbDelta functie om de SQL-query uit te voeren zoals weergegeven in de bovenstaande code.

Stap 3 Shortcode voor weergave van auteurslijst

Vervolgens moeten we de lijst met beschikbare auteurs weergeven zodat gebruikers deze kunnen volgen. Dus ik maak een shortcode waarmee je de auteurslijst op elke pagina kunt weergeven. Laten we beginnen met het maken van de shortocde.

 

Ik heb een shortcode gemaakt met de naam bijdragers en een functie genaamd bijdragers om de auteurslijst weer te geven. Alle code met betrekking tot het weergeven van auteurs bevindt zich binnen deze functie. U moet een speciale pagina maken om uw bijdragers te tonen. Je kunt het benoemen zoals je zou willen. Plaats vervolgens de shortcode [Bijdragen] binnen de pagina en klik op de publicatieknop. Toch hebben we geen code in de shortcode-functie. Laten we daar dus eens naar kijken.

Toon auteurslijst

Sommige blogs stellen gebruikers in staat om te registreren. Ze zullen in het algemeen als abonnees worden aangemaakt en abonnees kunnen geen berichten maken. Dus wanneer we de gebruikerslijst weergeven, moeten we ervoor zorgen dat we de gebruikers krijgen die berichten kunnen maken. Laten we naar de onderstaande code kijken.

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

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

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

'; $ authorsList. = '
'; ?>
  • We zorgen ervoor dat alle gebruikers de get_users functie.
  • Vervolgens moeten we tijdens het doorlopen van de gebruikerslijst controleren of de gebruiker berichten mag publiceren met behulp van de user_can functie.
  • We maken HTML-code voor details over de auteurs die berichten kunnen publiceren. Ik heb de auteurafbeelding weergegeven met gravatar, auteursnaam en beschrijving.
  • Vervolgens maken we een knop om auteurs te volgen. Het belangrijkste hier is dat ik een a heb gespecificeerd data-auteur attribuut en stel de ID van de auteur in.

Nu hebben we de HTML-code voor het weergeven van auteurs. Laten we dus kijken naar de code voor het weergeven van het inschrijfformulier.

  
Volg WP Authors
'. $ actStatus. '
Voer je e-mailadres in
'. $ authorsList. '
'; echo $ output; ?>

In dit eenvoudige HTML-formulier hebben we een tekstveld waarin een gebruiker zijn e-mailadres kan invoeren. Dan hebben we 2 knoppen om in te schrijven en de gevolgde auteurslijst te laden. Ik gebruik AJAX in deze hele plug-in. Dus de ID en klassen van HTML-elementen spelen een vitale rol. Als u het actuele plug-in bestand controleert, zult u merken dat ik de code bovenaan de bijdragers functie. Het wordt gebruikt om de activering te verifiëren en zal later worden uitgelegd. Nu hebben we de volledige vorm met de lijst van auteurs en het zal lijken op de afbeelding van de tutorial bovenaan.


Stap 4 JavaScript en CSS configureren

Nu begint het feitelijke functionaliteitgedeelte en hebben we een aantal CSS-stijlen en Javascript-bestanden nodig om onze functionaliteit te ondersteunen. Dus de volgende code zal u laten zien hoe u de nodige scripts en stijlen op de aanbevolen manier kunt opnemen.

  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'); ?>

Stap 5 Abonneer u op Plugin

Om auteurs te volgen, moet een gebruiker zich abonneren via zijn e-mail. Zodra een gebruiker zijn e-mail invoert en op de knop Abonneren klikt, worden ze geabonneerd op de service en wordt een e-mail verzonden om de service te activeren. Laten we eens kijken wat er gebeurt als op de abonneerknop wordt geklikt.

AJAX-aanvraag voor aanmelding maken

 

Ik heb een jQuery-functie gekoppeld met de live-gebeurtenis die moet worden aangeroepen wanneer de knop Abonneren (#subscribeAuthors) is geklikt. Het controleert of de e-mail geldig is met behulp van een reguliere expressie. Vervolgens maken we het AJAX-verzoek om de abonneerfunctie te bellen. Ik zal het AJAX-verzoek hier uitleggen.

AJAX-aanvraag verwerken in WordPress

Om AJAX-verzoeken vanuit de plug-in af te handelen, kunnen we de volgende code gebruiken:

 

Er worden acties genoemd wp_ajax_nopriv en wp_ajax om AJAX-verzoeken af ​​te handelen voor gebruikers die zijn uitgelogd en respectievelijk zijn ingelogd. Deze acties worden gevolgd door een onderstrepingsteken en de actie die we hebben gedefinieerd in de AJAX-aanvraag van het JS-bestand. Dus in dit geval de subscribe_to_wp_authors actie zal de subscribe_to_wp_authors functie.

"Zorg ervoor om te gebruiken dood gaan() aan het einde van elke AJAX-functie in je PHP-code sinds WordPress terugkeert 0 of -1 afhankelijk van het resultaat van de AJAX-aanvraag die fouten in JSON-strings kan veroorzaken. "

Laten we eens kijken wat er gebeurt in de functie:

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe waar email =% s", $ subscriber_email)); if (count ($ email_result) == '0') $ activation_code = generate_random_act_code (); $ result = $ wpdb-> query ($ wpdb-> prepare ("VOEG IN IN $ wpdb-> prefix author_subscribe (email, activation_code, status) VALUES (% s,% s,% s)", $ subscriber_email, $ activation_code, "unsubscribed")); $ activation_link = add_query_arg ('confirm-follow', $ activation_code, get_site_url (). $ _POST ['url']); if ($ result) if (wp_mail ($ subscriber_email, "WP Author Subscription", "Click $ activation_link to activate.")) echo json_encode (array ("success" => "Controleer e-mail voor activeringslink.") );  else echo json_encode (array ("error" => "Email Error."));  else echo json_encode (array ("error" => "Email bestaat al."));  else echo json_encode (array ("error" => "Geef een geldig e-mailadres op"));   dood gaan(); ?>

Zodra de gebruiker vervolgens op de activatielink in de e-mail klikt, worden deze teruggestuurd naar de website met een activeringssuccesbericht en wordt zijn e-mailadres in het tekstvak geladen. De activeringscontrole vindt plaats aan de bovenkant van de shortcode-functie. Ik heb de uitleg eerder weggelaten, nu is het tijd om die code te bekijken in de bijdragers functie.

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe waar activation_code =% s en status = 0"), $ activationCode); if (count ($ activationCheck)! = 0) $ activationResult = $ wpdb-> query ($ wpdb-> prepare ("update $ wpdb-> prefix author_subscribe set status = 1 waarbij activation_code =% s"), $ activatie code); if ($ activationResult) $ confirmedEmail = $ activationCheck [0] -> email; $ actStatus = "Activering succesvol"; $ actClass = "succes";  else $ actStatus = "Activering mislukt"; $ actClass = "error"; ?>

Een gebruiker kan de auteurspagina rechtstreeks bezoeken of via de bevestigingslink. Dus eerst kijken we of het bevestigen volgen parameter is beschikbaar in de URL om uit te zoeken of dit een activeringsverzoek is of niet. Vervolgens zoeken we naar een activering in de databasetabel voor de activeringscode die in de URL wordt verstrekt. Vervolgens worden de activeringsstatus van de gebruiker bijgewerkt en wordt het resultaatbericht met de relatieve CSS-klasse weergegeven. Nu is het hele inschrijvingsproces voltooid. Nu kan de gebruiker beginnen met het volgen van auteurs.


Stap 6 Auteurs volgen

Nu is de activering geslaagd en wordt uw e-mail in het e-mailvak weergegeven. Dit is het moment waarop u auteurs uit de lijst kunt kiezen en op de knop kunt klikken "Volgen" knop. Laten we kijken hoe een gebruiker een auteur kan volgen. Een AJAX-verzoek zal worden gedaan zodra u op de knop Volgen van een specifieke auteur klikt.

 

Elke auteur heeft een volgknop voor zijn naam die een CSS-klasse heeft genoemd volgen. Dus telkens als op een vervolgknop wordt geklikt, wordt het $ Jq ( "volgen "). Live (" klik") functie zal worden geactiveerd en we kunnen alleen de geklikte knop gebruiken $ Jq (deze). Vervolgens maken we een nieuw AJAX-verzoek zoals eerder met de actie follow_wp_authors.

Het enige verschil hier is dat we een extra parameter toevoegen met de naam author_id op het verzoek. We kunnen de ID van de auteur verkrijgen met behulp van de data-auteur kenmerk dat we hebben gedefinieerd in de displaysectie. Laten we nu eens kijken naar de PHP-code voor het verwerken van dit AJAX-verzoek.

 

We moeten twee nieuwe acties toevoegen voor dit AJAX-verzoek, zoals we eerder deden. De functie follow_up_authors bevat de code die wordt gebruikt voor het volgen van een auteur. Omdat het geen zin heeft telkens weer herhalende code te verklaren, ga ik de secties uitleggen die nodig zijn. Dus ik stel voor dat je de functie in het plugin-bestand bekijkt terwijl je de tutorial doorleest. Het eerste deel van de functie zal de nonce verifiëren, de e-mail valideren en controleren op activering in de database. Dus laten we verder gaan.

Gebruikers toevoegen voor navolging

Aangezien we aangepaste tabellen gebruiken in onze plug-in, zelfs als er veel auteurs beschikbaar zijn op de site, zal onze auteurstabel aanvankelijk leeg zijn. Dus wanneer een gebruiker op de knop Volgen klikt voor een auteur, kunnen we controleren of de auteur beschikbaar is in onze tabel. Zo niet, dan maken we de eerste invoer door de auteur in de tabel te plaatsen. Beschouw de volgende code:

 ID kaart; $ authorId = isset ($ _ POST ['author_id'])? $ _POST ['author_id']: "; / * * Controleer of de auteur bestaat en invoegen indien niet reeds beschikbaar om te volgen * / $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare (" select * from $ wpdb- > prefix author_followers waarbij author_id =% d "), $ authorId); if (count ($ authorResult) == '0') $ result = $ wpdb-> query ($ wpdb-> prepare (" INSERT INTO $ wpdb-> voorvoegsel author_followers (author_id) VALUES (% d) ", $ authorId));?>

Het ontvangen van door gebruikers gevolgde auteurslijst

 followed_authors; if ($ subscribedAuthorList! = ") $ subscribedAuthorList = explode (", ", $ subscribedAuthorList); else $ subscribedAuthorList = array (); if (! (in_array ($ authorId, $ subscribedAuthorList))) array_push ( $ subscribedAuthorList, $ authorId);?>

Het ontvangen van de volgerslijst van auteurs en het voltooien van Follow

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_followers waarbij author_id =% d"), $ 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); // Gebruikerslijst die de specifieke auteur volgt $ followersList = implode ("," , $ authorSubscribersArray); // Auteurslijst gevolgd door specifieke gebruiker $ subscribedAuthorList = implode (",", $ subscribedAuthorList); $ result = $ wpdb-> query ($ wpdb-> prepare ("update $ wpdb-> prefix author_followers set volgers_list =% s waar author_id =% d "), $ followersList, $ authorId); $ result = $ wpdb-> query ($ wpdb-> prepare (" update $ wpdb-> prefix author_subscribe set follow_authors =% s waar e-mail =% s "), $ subscribedAuthorList, $ subscriberEmail); echo json_encode (array (" status "=>" succes "));?>

Stap 7 Niet meer volgen van auteurs

Als deze plug-in effectief moet zijn, moeten gebruikers mogelijk de functie hebben om auteurs niet meer te volgen en auteurs op elk gewenst moment te volgen. Ik zal het proces van het niet volgen van een auteur uitleggen. Omdat het erg op het volgende proces lijkt, zal ik herhaalde codes in de uitleg weglaten.

De knop inline met alle gevolgde auteurs wordt weergegeven als Volgend op. Wanneer u de muisaanwijzer op de knop houdt, verandert de tekst in een andere kleur Volg niet. Wanneer u op de knop klikt, wordt er een ander AJAX-verzoek gedaan om de auteur te 'Ontvolgen'. Omdat alleen de actienaam anders is dan de bovenstaande code, neem ik deze hier niet op. Je kunt naar kijken $ Jq ( "na "). Live (" klik", function () in de followjs het dossier.

De functie die wordt gebruikt om de gebruiker niet meer te volgen, is unfollow_wp_authors. Deze code is vergelijkbaar met de functie volg auteur. We kunnen de gemeenschappelijke code in de toekomst in één functie veranderen als u bereid bent de plug-in uit te breiden. In het gedeelte 'Volgende auteurs' hebben we de auteur toegevoegd aan de lijst als deze nog niet beschikbaar is. In dit geval verwijderen we de auteur van de lijst als deze al bestaat. Code hieronder toont u de wijzigingen in vergelijking met de functie van de volg-auteur.

  $ waarde) if ($ authorId == $ waarde) niet ingesteld ($ subscribedAuthorList [$ key]);  foreach ($ authorSubscribersArray as $ key => $ value) if ($ subscriberID == $ value) unset ($ authorSubscribersArray [$ key]); ?>

U kunt zien dat in plaats van auteurs naar de array te duwen, we ze verwijderen door de functie Uitschakelen te gebruiken.


Stap 8 Auteur van volgende informatie laden

In eerste instantie is het e-mailadres leeg wanneer u de pagina met de auteurslijst laadt, omdat we geen procedure hebben om de huidige gebruiker te identificeren. Vervolgens moet de gebruiker de e-mail invoeren en op de knop Laden klikken om de lijst met de volgende gegevens van elke gebruiker te krijgen. Dit wordt een andere AJAX-aanvraag die lijkt op de vorige en u kunt de code bekijken met $ Jq ( "# loadFollowers"). Live ( "klik", function () . Ik zal het resultaatgedeelte van het verzoek toelichten, omdat het een beetje verschilt van de vorige.

 

Laten we eens kijken naar de functie voor het laden van de volgende auteurslijst vanaf de serverzijde:

 get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe waar email =% s en status = 1"), $ subscriber_email); if (count ($ email_result) == '1') $ subscriberID = $ email_result [0] -> id; $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_subscribe waar id =% d"), $ subscriberID); if (count ($ authorResult)! = '0') $ userFollowedAuthors = $ authorResult [0] -> gevolgd_authors; $ userFollowedAuthors = exploderen (",", $ userFollowedAuthors); echo json_encode (array ("authors" => $ userFollowedAuthors));  else echo json_encode (array ("error" => "Geef een geldig e-mailadres op"));   dood gaan(); ?>

Gebruikers zijn nu geabonneerd op de service en kunnen auteurs volgen en ontvolgen wanneer ze maar willen. Het laatste en belangrijkste deel van de zelfstudie is het verzenden van e-mails naar volgers wanneer een bericht door een auteur wordt gepubliceerd. Laten we beginnen.


Stap 9 E-mails verzenden wanneer berichten zijn gepubliceerd

We moeten een actie activeren als een gebruiker een nieuw bericht publiceert. WordPress biedt een reeks acties met de naam Poststatusovergangen om deze functionaliteit te bereiken. Ik heb vier overgangen ingesteld, die kunnen worden geactiveerd wanneer u een bericht publiceert.

 

De bovenstaande acties zullen de notify_author_followers functie wanneer een bericht wordt geconverteerd naar een gepubliceerde staat van een van de nieuwe, concept, in behandeling of toekomstige staten. Dus laten we e-mails versturen met behulp van de notify_author_followers functie.

 post_author; $ authorDisplayName = get_the_author_meta ('display_name', $ publishedPostAuthor); $ authorsFollowers = $ wpdb-> get_results ($ wpdb-> prepare ("select * from $ wpdb-> prefix author_followers waarbij author_id =% d"), $ publishedPostAuthor); if (count ($ authorsFollowers) == '1') $ authorsFollowersList = $ authorsFollowers [0] -> followers_list; if ($ authorsFollowersList! = ") $ authorsFollowersEmails = $ wpdb-> get_results ($ wpdb-> prepare (" selecteer e-mail van $ wpdb-> prefix author_subscribe waar id in (% s) "), $ authorsFollowersList); $ bccList = "; foreach ($ authorsFollowersEmails als $ key => $ emailObject) $ bccList. = $ emailObject-> email. "";  $ bccList = substr ($ bccList, 0, -1); $ postMessage = "guid">

$ Post-> POST_TITLE

"; $ emailHeaders. =" Van: WP Auteurs volgen "." \ r \ n "; $ emailHeaders. =" Bcc: $ bccList "." \ r \ n "; add_filter (" wp_mail_content_type ", create_function (" ", 'return' text / html"; ')); if (wp_mail ("[email protected]", "New Post From $ authorDisplayName", $ postMessage, $ emailHeaders)) ?>