Den otroliga tillväxten i WordPress har förenklat webbutveckling. Populära handledningssidor som Tuts + -nätverket använder WordPress för att driva sina webbplatser. Dessa webbplatser tillhandahåller hundratals nya handledningar, artiklar och uppdateringar dagligen. Så att hålla reda på varje artikel är inte lätt även med din RSS-läsare. Din matläsare fylls med nya snabbt och som läsare är vi bara intresserade av vissa ämnen. Så idealiskt skulle vi behöva en metod som ger artiklar som vi är intresserade av. Allmänt författare specialiserar sig på specifika områden. Om Darren Rowse skriver en artikel om bloggar vill alla läsa den. På samma sätt har vi favoritförfattare som vi vill läsa varje gång.
Så i denna handledning kommer jag att skapa ett enkelt WordPress-plugin som låter dig prenumerera på dina favoritförfattare. Du får ett mail varje gång din favoritförfattare publicerar ett inlägg. Därför kommer du inte att sakna de viktiga artiklarna någonsin igen.
Vår plugin tillåter i princip användare att få meddelanden om nya inlägg från abonnenterade upphovsmän. Följande är de funktioner och komponenter som vi kommer att utveckla under handledningen:
Jag kommer inte att förklara detta steg i detalj, eftersom du kanske redan vet att en WordPress-pluginfil måste ha en kommentar sektion överst för att identifiera plugin-detaljerna. Jag har namngett plugin WP Följ författare. Så skapa en ny katalog i / Wp-content / plugins katalog heter wp-följ-författare och skapa index.php fil med följande uppgifter:
Vi behöver två databas tabeller för denna plugin. Jag heter dem wp_author_subscribe
och wp_author_followers
(var wp_
kommer faktiskt att vara det konfigurerade db-prefixet). Bordet wp_author_subscribe
kommer att behålla abonnenternas e-post, aktiveringsstatus och efterföljande författarlista. De wp_author_followers
tabellen innehåller författarens id och lista över anhängare. Vi måste skapa dessa tabeller om plugin-aktivering. Så låt oss överväga följande kod.
fråga ("DROP TABLE IF EXISTS $ wpdb-> prefix author_subscribe"); $ sql1 = "SKAPA TABELL $ wpdb-> prefix author_subscribe (id int (11) INTE NULL AUTO_INCREMENT, activation_code varchar (255) INTE NULL, email varchar (75) INTE NULL, status int (11) INTE NULL, följt av författarens text NOT NULL, PRIMARY KEY (id)) MOTOR = InnoDB AUTO_INCREMENT = 1; "; dbDelta ($ sql1); $ sql2 = ("CREATE TABLE $ wpdb-> prefix author_followers (id int (11) INTE NULL AUTO_INCREMENT, author_id int (11) INTE NULL, följare_list text INTE NULL, PRIMÄR KEY (id)) ENGINE = InnoDB AUTO_INCREMENT = 1 ; "); dbDelta ($ sql2); register_activation_hook (__ FILE__, 'wp_authors_tbl_create'); ?>
register_activation_hook
. Här ska vi skapa våra databas tabeller.dbDelta
funktion för att utföra SQL-frågan som visas i koden ovan.Nästa måste vi visa listan över författare som är tillgängliga för att användarna ska följa. Så jag skapar en kortnummer som låter dig visa författarlistan på en viss sida. Låt oss börja skapa shortocde.
Jag har skapat en kortnummer som heter bidrags
och en funktion som heter bidrags
för att visa författarlistan. Alla koden relaterade till att visa författare finns i denna funktion. Du måste skapa en särskild sida för att visa dina bidragsgivare. Du kan namnge det vad du vill att det ska vara. Placera sedan kortnumret [bidrags]
inuti sidan och klicka på publicera-knappen. Fortfarande har vi inte någon kod inom kortkodsfunktionen. Så låt oss titta på det.
Vissa bloggar tillåter användare att registrera sig. De kommer att skapas som abonnenter i allmänhet och abonnenter kan inte skapa inlägg. Så när vi visar användarlistan måste vi se till att få de användare som har förmågan att skapa inlägg. Låt oss titta på koden nedan.
'; foreach ($ författare som $ författare) if (user_can ($ author-> ID, 'publish_posts')) $ authorsList. = ''; $ authorsList. = ''. get_avatar ($ author-> ID). ''. get_the_author_meta ('display_name', $ author-> ID). '
'. get_the_author_meta ('description', $ author-> ID). '
get_users
fungera.user_can
fungera.data författaren
ange och ange författarens ID.Nu har vi HTML-koden för att visa författare. Så låt oss titta på koden för att visa prenumerationsformuläret.
Följ WP-författare'. $ authorsList. ''. $ actStatus. 'Skriv in din e-postadress
I denna enkla HTML-formulär har vi ett textfält för en användare att ange sin e-postadress. Då har vi 2 knappar för att prenumerera och ladda den efterföljande författarlistan. Jag använder AJAX genom hela denna plugin. Så spelar ID och klasser av HTML-element en viktig roll. Om du kontrollerar den faktiska pluginfilen märker du att jag inte har förklarat koden längst upp i bidrags
fungera. Det används för att verifiera aktiveringen och kommer att förklaras senare. Nu har vi det fullständiga formuläret med författarnas lista och det kommer att se ut som bildspelet som visas längst upp.
Nu börjar den faktiska funktionalitetsdelen och vi behöver några CSS-format och Javascript-filer för att stödja vår funktionalitet. Så följande kod visar dig hur du tar med nödvändiga skript och stilar på det rekommenderade sättet.
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
som finns i plugin-mappen.wp_register_style
och wp_enqueue_style
funktioner. Den finns också i plugin-mappen.plugins_url
funktionen ger dig vägen till den aktuella pluginmappen. Det här är det bästa sättet att inkludera skript. Vissa människor får plugin-katalogens webbadress och lägger till namnet på plugin-mappen för att få sökvägen. Detta rekommenderas inte och kommer att orsaka fel när namnet på plugin-mappen ändras.wp_localize_script
fungera. ajaxUrl
- Hämtar sökvägen till ajax-filen i WordPress.ajaxNonce
- Ger en unik nyckel till varje ajaxförfrågan för valideringsändamål.CURRENTURL
- Hämtar sökvägen till den aktuella webbadressen för att identifiera sidan med bidragsgivare.För att följa författare måste en användare prenumerera via deras email. När en användare har skrivit in sin epost och klickar på knappen Prenumerera, kommer de att prenumerera på tjänsten och ett e-postmeddelande skickas för att aktivera tjänsten. Låt oss se vad som händer när prenumerationsknappen klickas.
Jag har bifogat en jQuery-funktion med liveevenemanget som ska ringas när knappen Prenumerera (#subscribeAuthors
) är klickat. Det kontrollerar om e-postadressen är giltig med ett vanligt uttryck. Då skapar vi AJAX-förfrågan för att ringa prenumerationsfunktionen. Jag förklarar AJAX-förfrågan här.
subscribe_to_wp_authors
.För att hantera AJAX-förfrågningar från plugin kan vi använda följande kod:
Det finns åtgärder som heter wp_ajax_nopriv
och wp_ajax
för att hantera AJAX-förfrågningar för användare som är inloggade och inloggade respektive. Dessa åtgärder följs av en understrykning och den åtgärd vi definierade i AJAX-förfrågan från JS-filen. Så i det här fallet subscribe_to_wp_authors
åtgärd kommer att ringa subscribe_to_wp_authors
fungera.
"Se till att du använder
dö()
i slutet av varje AJAX-funktion i din PHP-kod sedan WordPress returnerar0
eller-1
beroende på resultatet av AJAX-förfrågan, vilket kan orsaka fel i JSON-strängar. "
Låt oss se vad som händer inom funktionen:
get_results ($ wpdb-> prepare ("välj * från $ wpdb-> prefix author_subscribe där email =% s", $ subscriber_email)); om (räkna ($ email_result) == '0') $ activation_code = generate_random_act_code (); $ result = $ wpdb-> query ($ wpdb-> förbereda ("INSERT INTO $ wpdb-> prefix author_subscribe (email, activation_code, status) VALUER (% s,% s,% s)", $ subscriber_email, $ activation_code, "unsubscribed")); $ activation_link = add_query_arg ("confirm-follow", $ activation_code, get_site_url (). $ _POST ['url']); om $ resultat if (wp_mail ($ subscriber_email, "WP Author Subscription", "Klicka $ activation_link to activate.")) echo json_encode (array ("success" => "Vänligen kolla e-post för aktiveringslänk.") ); annars echo json_encode (array ("error" => "Email Error.")); else echo json_encode (array ("error" => "E-post finns redan.")); else echo json_encode (array ("error" => "Vänligen ange giltig e-post")); dö (); ?>
wp_verify_nonce
fungera. Olika nonce-värden innebär att AJAX-förfrågan ska vara ogiltig och kasseras.is_email
.Så snart användaren klickar på aktiveringslänken i e-postmeddelandet, kommer de att styras tillbaka till webbplatsen med ett aktiveringssuccesmeddelande och deras e-postadress laddas i textrutan. Aktiveringskontrollen görs längst upp i kortkodsfunktionen. Jag har förklarat förklaringen tidigare, nu är det dags att kolla in den koden i bidrags
fungera.
get_results ($ wpdb-> prepare ("välj * från $ wpdb-> prefix author_subscribe där activation_code =% s och status = 0"), $ activationCode); ($ activationCheck)! = 0) $ activationResult = $ wpdb-> fråga ($ wpdb-> förbereda ("uppdatera $ wpdb-> prefix author_subscribe set status = 1 där activation_code =% s"), $ aktiveringskod); om ($ activationResult) $ confirmedEmail = $ activationCheck [0] -> email; $ actStatus = "Activation Successfull"; $ actClass = "success"; else $ actStatus = "Aktivering misslyckades"; $ actClass = "error"; ?>
En användare kan besöka författarens sida direkt eller använda länken för bekräftelse. Så först kontrollerar vi om bekräfta-följ
Parameter finns i webbadressen för att se om det här är en aktiveringsförfrågan eller inte. Då söker vi efter en aktivering i databattabellen för aktiveringskoden som finns i webbadressen. Då uppdaterar vi användarens aktiveringsstatus och visar resultatmeddelandet med relativ CSS-klass. Nu är hela processen att prenumerera avslutad. Nu kan användaren börja följa författare.
Aktiveringen är nu framgångsrik och din e-post visas i e-postrutan. Det här är den tid då du kan välja författare från listan och klicka på "Följ"
knapp. Låt oss se hur man får en användare att följa en författare. En AJAX-förfrågan kommer att göras så snart du klickar på en specifik författares följarknapp.
Varje författare har en följeknapp framför hans namn som innehåller en CSS-klass som heter Följ
. Så varje gång en följeknapp klickas, så $ Jq ( "Följ "). Lever (" klick")
funktionen kommer att utlösas och vi kan bara få den klickade knappen med $ JQ (detta)
. Då gör vi en ny AJAX-förfrågan som tidigare med åtgärden follow_wp_authors
.
Den enda skillnaden här är att vi lägger till en extra parameter som heter author_id
till begäran. Vi kan få författarens ID med hjälp av data författaren
attribut vi definierade i visningsavsnittet. Låt oss nu bara titta på PHP-koden för hantering av denna AJAX-förfrågan.
Vi måste lägga till två nya åtgärder för denna AJAX-förfrågan som vi gjorde tidigare. Funktionen follow_up_authors
kommer att innehålla koden som används för att följa en författare. Eftersom det inte går att förklara repeterande kod igen och igen ska jag förklara de sektioner som är nödvändiga. Så jag föreslår att du tittar på funktionen i pluginfilen medan du läser igenom handledningen. Den inledande delen av funktionen verifierar nonce, validerar e-postmeddelandet och kontrollerar aktiveringen i databasen. Så låt oss gå framåt.
Eftersom vi använder egna tabeller i vårt plugin, trots att det finns många författare som finns på webbplatsen, kommer vår författartabell att vara tom. Så när en användare klickar på knappen Följ för en författare kan vi kolla om författaren är tillgänglig i vårt bord. Om inte gör vi den ursprungliga inmatningen genom att förlägga författaren till tabellen. Tänk på följande kod:
id; $ authorId = isset ($ _ POST ['author_id'])? $ _POST ['author_id']: "; / * * Kontrollera om författaren finns och sätt in om det inte redan är tillgängligt för att följa * / $ authorResult = $ wpdb-> get_results ($ wpdb-> förbereda (" välj * från $ wpdb- > prefix author_followers where author_id =% d "), $ authorId), om (count ($ authorResult) == '0') $ result = $ wpdb-> fråga ($ wpdb-> förbereda (" INSERT INTO $ wpdb-> prefix author_followers (author_id) värden (% d) ", $ authorId));>>
followed_authors; om $ subscribedAuthorList! = ") $ subscribedAuthorList = explodera (", ", $ subscribedAuthorList); annars $ subscribedAuthorList = array (); om (! (in_array ($ authorId, $ subscribedAuthorList))) array_push $ subscribedAuthorList, $ authorId);?>
followed_authors
kolumnvärde i wp_author_subscribe
tabell.explodera
och kontrollera om användaren redan har prenumererat på författaren med hjälp av in_array
fungera. Sedan lägger vi till författar-ID i användarens efterföljande författarlista.get_results ($ wpdb-> prepare ("välj * från $ wpdb-> prefix author_followers where author_id =% d"), $ authorId); om count ($ authorResult) == '1') if ($ authorResult [0] -> followers_list! = ") $ authorSubscribersArray = explodera (", ", $ authorResult [0] -> followers_list); $ authorSubscribersArray = array (); if (! (in_array ($ subscriberID, $ authorSubscribersArray))) array_push ($ authorSubscribersArray, $ subscriberID); // Användarlista som följer specifik författare $ followersList = implode , $ authorSubscribersArray); // Författarlista följt av specifik användare $ subscribedAuthorList = implode (",", $ subscribedAuthorList); $ result = $ wpdb-> fråga ($ wpdb-> förbereda ("uppdatera $ wpdb-> prefix author_followers set followers_list =% s där author_id =% d "), $ följareLista, $ authorId); $ result = $ wpdb-> fråga ($ wpdb-> förbereda (" uppdatera $ wpdb-> prefix author_subscribe set followed_authors =% s där email =% s "), $ subscribedEuthorList, $ subscriberEmail); echo json_encode (array (" status "=>" framgång "));
$ authorSubscribersArray
och tilldela en variabel som heter $ followersList
$ subscribedAuthorList
Om det här pluginet ska vara effektivt kan det hända att användarna måste ha funktionen att följa upp upphovsmän och följa upphovsmän vid en viss tidpunkt. Jag förklarar processen att följa upp en författare. Eftersom det väldigt liknar följande process kommer jag att släppa upp repeterande koder i förklaringen.
Knappen inline med alla efterföljande författare kommer att visas som Följande. När du sveper på knappen ändras texten till olika färger som Sluta följa. När du klickar på knappen kommer en annan AJAX-förfrågan att göras till "Avfölja" författaren. Eftersom endast åtgärdsnamnet skiljer sig från ovanstående kod kommer jag inte att inkludera det här. Du kan titta på $ Jq ( "följa "). Lever (" klick", function ()
i followjs
fil.
Funktionen som användes för att följa upp användaren är unfollow_wp_authors
. Denna kod liknar följande författarfunktion. Vi kan lägga den gemensamma koden i en enda funktion i framtiden om du är villig att förlänga plugin. I den följande författaravsnittet lade vi till författaren till listan om den inte redan är tillgänglig. I det här fallet tar vi bara bort författaren från listan om det redan finns. Koden nedan visar ändringarna jämfört med följande författarfunktion.
$ värde) om ($ authorId == $ värde) unset ($ subscribedAuthorList [$ key]); foreach ($ authorSubscribersArray som $ key => $ värde) if ($ subscriberID == $ värde) unset ($ authorSubscribersArray [$ key]); ?>
Du kan se att vi istället för att trycka författare till matrisen tar bort dem med hjälp av funktionen unset.
Ursprungligen kommer e-postadressen att vara tom när du laddar sidan med författarlistan eftersom vi inte har ett förfarande för att identifiera den aktuella användaren. Då måste användaren ange e-postmeddelandet och klicka på lastknappen för att få listan med följande uppgifter för varje användare. Detta kommer att bli en annan AJAX-förfrågan som liknar tidigare och du kan titta på koden med $ JQ ( "# loadFollowers"). Leva ( "klick", function ()
. Jag förklarar resultatdelen av förfrågan eftersom den är lite annorlunda än de föregående.
Följ
och kontrollerar om författaren följs av användaren.inArray
funktionen används för detta och den kommer att återvända -1
om söksträngen inte hittas i matrisen.Låt oss ta en titt på funktionen för att ladda följande författarlista från serverns sida:
get_results ($ wpdb-> prepare ("välj * från $ wpdb-> prefix author_subscribe där email =% s och status = 1"), $ subscriber_email); om (räkna ($ email_result) == '1') $ subscriberID = $ email_result [0] -> id; $ authorResult = $ wpdb-> get_results ($ wpdb-> förbereda ("välj * från $ wpdb-> prefix author_subscribe där id =% d"), $ subscriberID); om (räkna ($ authorResult)! = '0') $ userFollowedAuthors = $ authorResult [0] -> followed_authors; $ userFollowedAuthors = explodera (",", $ userFollowedAuthors); echo json_encode (array ("authors" => $ userFollowedAuthors)); else echo json_encode (array ("error" => "Vänligen ange giltig e-post")); dö (); ?>
wp_author_subscribe
.Nu abonnerar användarna på tjänsten och kan följa och följa upp författare när de vill. Den sista och viktigaste delen av handledningen är att skicka e-post till anhängare när ett inlägg publiceras av en författare. Låt oss börja.
Vi måste utlösa en åtgärd när någon användare publicerar ett nytt inlägg. WordPress tillhandahåller en uppsättning åtgärder som heter Post Status Transitions för att uppnå denna funktionalitet. Jag har satt upp fyra övergångar, som kan utlösas när du publicerar ett inlägg.
Ovanstående åtgärder kommer att ringa notify_author_followers
Funktion när ett inlägg konverteras till ett publicerat tillstånd från ett av nya, utkast, pågående eller framtida stater. Så låt oss skicka e-post med hjälp av notify_author_followers
fungera.
post_author; $ authorDisplayName = get_the_author_meta ("display_name", $ publishedPostAuthor); $ authorsFollowers = $ wpdb-> get_results ($ wpdb-> förbereda ("välj * från $ wpdb-> prefix author_followers where author_id =% d"), $ publishedPostAuthor); om (räkna ($ authorsFollowers) == '1') $ authorsFollowersList = $ authorsFollowers [0] -> followers_list; om $ authorsFollowersList! = ") $ authorsFollowersEmails = $ wpdb-> get_results ($ wpdb-> förbereda (" välj e-post från $ wpdb-> prefix author_subscribe där id i (% s) "), $ authorsFollowersList); $ bccList = "; foreach ($ authorsFollowersEmails as $ key => $ emailObject) $ bccList. = $ emailObject-> email. ""; $ bccList = substr ($ bccList, 0, -1); $ postMessage = "guid">$ Post-> POST_TITLE
"; $ emailHeaders. =" Från: WP Följ författare". \ r \ n"; $ emailHeaders. = "Bcc: $ bccList". "\ r \ n"; add_filter ("wp_mail_content_type", create_function ("", "return" text / html ";")); om (wp_mail ("[email protected]", "Ny post från $ authorDisplayName", $ postMessage, $ emailHeaders)) ?>
notify_author_followers
fungera.$ post
objekt. Sedan får vi listan över anhängare för den nuvarande författaren från $ wpdb-> prefix author_followers
tabell.$ Wpdb-> prefix author_subscribe
tabell.wp_mail_content_type
fungera.$ emailHeaders
variabel. Vi vill inte heller att användarna ska se andra användares e-postadresser. Lägg sedan till e-postlistan över anhängare till bcc rubrik.wp_mail
funktion som visas ovan.Vi har slutfört processen med att skapa ett grundläggande WordPress-plugin för att följa författarna. När ett inlägg publiceras kommer följare att bli underrättad. Så enkelt är det.
Jag var tvungen att skapa en lång handledning för att förklara allt för att skapa denna typ av plugin med AJAX. Detta är fortfarande på sin mest grundläggande nivå. Som användare skulle jag vilja ha funktionaliteten att följa författare i varje blogg jag läste. Så som webbmasters bör du överväga att förbättra pluginfunktionerna så