Simplu WordPress Plugin pentru a urma autorii dvs. preferate

Ritmul de creștere incredibil al WordPress a simplificat dezvoltarea site-ului web. Site-urile populare de tutorial, cum ar fi rețeaua Tuts +, utilizează WordPress pentru a-și propune site-urile web. Aceste site-uri oferă sute de tutoriale noi, articole și actualizări zilnice. Deci, urmărirea fiecărui articol nu este ușor chiar și cu cititorul de feed-uri RSS. Cititorul dvs. de feed va fi umplut rapid cu noi și, ca cititori, suntem interesați doar de anumite subiecte. În mod ideal, am avea nevoie de o metodă care să ofere articole despre care suntem interesați. În general, autorii se specializează în domenii specifice. Dacă Darren Rowse scrie un articol despre blogging, fiecare va dori să o citească. De asemenea, avem autorii preferați pe care am dori să le citim de fiecare dată.

Deci, în acest tutorial am de gând să creez un plugin simplu WordPress care vă permite să vă abonați la autorii dvs. preferate. Veți primi un e-mail de fiecare dată când autorul tău preferat publică o postare. Prin urmare, nu veți pierde din nou articole importante.


Ce dezvoltăm astăzi

Pluginul nostru va permite utilizatorilor să primească notificări despre postări noi de la autori abonați. Următoarele sunt caracteristicile și componentele pe care le vom dezvolta în timpul tutorialului:

  • Crearea unui cod scurt pentru lista tuturor autorilor
  • Permite utilizatorilor să urmărească și să ignore autorii
  • Trimiteți e-mailuri atunci când este publicată o nouă postare

Pasul 1 Crearea fișierului Plugin

Nu voi explica acest pas in detaliu, deoarece probabil ca stiti deja ca un fisier plugin WordPress trebuie sa aiba o sectiune de comentarii in partea de sus pentru a identifica detaliile pluginului. Am numit pluginul WP Follow Authors. Deci, creați un nou director în / Wp-content / plugins director numit -autori wp-urmați și creați index.php fișier cu următoarele detalii:

 

Pasul 2 Crearea de tabele pentru activarea pluginului

Avem nevoie de două tabele de baze de date pentru acest plugin. Le numesc wp_author_subscribe și wp_author_followers (Unde wp_ va fi de fapt prefixul db configurat). Masa wp_author_subscribe va păstra e-mail-urile abonatului, starea activării și lista autorilor urmăriți. wp_author_followers tabel va conține id autor și lista de adepți. Trebuie să creați aceste tabele în activarea pluginului. Deci, să luăm în considerare următorul cod.

 interogare ("DROP TABLE, DACĂ EXISTĂ $ wpdb-> prefix author_subscribe"); $ sql1 = "CREATE TABLE $ wpdb-> prefix autor_subscribe (id int (11) NOT NULL AUTO_INCREMENT, activation_code varchar (255) NOT NULL, email varchar (75) NOT NULL, status int (11) NOT NULL, follow_authors NU NULL, KEY PRIMARY (id)) MOTOR = InnoDB AUTO_INCREMENT = 1; "; dbDelta ($ sql1); $ id = ("CREATE TABLE $ wpdb-> prefix autor_followers (id int (11) NOT NULL AUTO_INCREMENT, author_id int (11) NOT NULL, followers_list text NOT NULL, KEY PRIMARY ; "); dbDelta ($ sql2);  register_activation_hook (__FILE__, 'wp_authors_tbl_create'); ?>
  • Putem crea o funcție care să fie apelată în activarea plugin-ului register_activation_hook. Aici ar trebui să creăm tabelele de baze de date.
  • Tabelele de baze de date pot fi create utilizând o interogare personalizată WordPress. Dar modul recomandat este utilizarea dbDelta funcția de a executa interogarea SQL așa cum se arată în codul de mai sus.

Pasul 3 Cod scurt pentru afișarea listei autorilor

Apoi trebuie să afișăm lista autorilor disponibili pentru a putea fi urmată de utilizatori. Deci, voi crea un scurtcod care vă permite să afișați lista autorilor în orice pagină dată. Să începem să creăm o scurtă.

 

Am creat un shortcode numit contribuitori și o funcție numită contribuitori pentru a afișa lista autorilor. Toate codurile legate de afișarea autorilor se află în interiorul acestei funcții. Trebuie să creați o pagină specială pentru a vă arăta contribuabilii. Puteți să o numiți oricare doriți să fie. Apoi plasați codul scurt [contribuitori] în interiorul paginii și faceți clic pe butonul de publicare. Încă nu avem cod în interiorul funcției de cod scurt. Deci, să ne uităm la asta.

Afișați lista autorului

Unele bloguri permit utilizatorilor să se înregistreze. Acestea vor fi create ca abonați în general și abonații nu pot crea postări. Atunci când afișăm lista de utilizatori, trebuie să ne asigurăm că utilizatorii au capacitatea de a crea postări. Să ne uităm la codul de mai jos.

 „; foreach (autori $ ca autor $) if (user_can ($ author-> ID,'public_posts ')) $ authorsList. ='
". get_avatar ($ autor-> ID). '

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

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

„; $ authorsList. = '
„; ?>
  • Obținem toți utilizatorii care utilizează get_users funcţie.
  • Apoi, în timp ce în buclă prin lista de utilizatori, trebuie să verificăm dacă utilizatorul are permisiunea de a publica postări folosind user_can funcţie.
  • Creați cod HTML pentru detalii despre autorii care pot publica postări. Am afișat imaginea autorului utilizând gravatar, numele afișat de autor și descrierea.
  • Apoi vom crea un buton pentru a urma autorii. Lucrul important aici este că am specificat a date-autor atribuiți și setați ID-ul autorului.

Acum avem codul HTML pentru afișarea autorilor. Așadar, să examinăm codul pentru afișarea formularului de abonare.

  
Urmați autorii WP
". $ actStatus. '
Introduceți adresa dvs. de email
". $ authorsList. '
„; echo $ output; ?>

În această formă HTML simplă, avem un câmp de text pentru ca un utilizator să introducă adresa de e-mail. Apoi avem 2 butoane pentru a vă abona și pentru a încărca lista de autor urmată. Voi folosi AJAX în întregul plugin. Astfel, ID-ul și clasele de elemente HTML joacă un rol vital. Dacă verificați fișierul plugin real, veți observa că nu am explicat codul din partea superioară a acestuia contribuitori funcţie. Este folosit pentru a verifica activarea și va fi explicat mai târziu. Acum avem formularul complet cu lista autorilor si va arata ca imaginea tutorialului prezentata in partea de sus.


Pasul 4 Configurarea JavaScript și CSS

Acum începe partea de funcționalitate reală și avem nevoie de câteva stiluri CSS și fișiere Javascript pentru a ne susține funcționalitatea. Deci, următorul cod vă va arăta cum să includeți scripturile și stilurile necesare în modul recomandat.

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

Pasul 5 Abonați-vă la Plugin

Pentru a urma autorii, un utilizator trebuie să se aboneze folosind e-mailul lor. Odată ce un utilizator intră în e-mail și face clic pe butonul Abonare, acesta va fi abonat la serviciu și va fi trimis un e-mail pentru a activa serviciul. Să vedem ce se întâmplă când se face clic pe butonul de abonare.

Crearea solicitării de abonament AJAX

 

Am atașat o funcție jQuery utilizând evenimentul live care trebuie apelat când butonul Abonare (#subscribeAuthors). Verifică dacă e-mailul este valid utilizând o expresie regulată. Apoi vom crea cererea AJAX pentru a apela funcția de abonare. Voi explica cererea AJAX aici.

Manipularea solicitării AJAX în WordPress

Pentru a putea gestiona cererile AJAX din plugin, putem folosi următorul cod:

 

Sunt numite acțiuni wp_ajax_nopriv și wp_ajax pentru a gestiona solicitările AJAX pentru utilizatorii care sunt logați și conectați, respectiv. Aceste acțiuni sunt urmate de un subliniere și de acțiunea pe care am definit-o în cererea AJAX din fișierul JS. Deci, în acest caz subscribe_to_wp_authors acțiunea va apela subscribe_to_wp_authors funcţie.

"Asigurați-vă că utilizați a muri() la sfârșitul fiecărei funcții AJAX din codul PHP de când WordPress se întoarce 0 sau -1 în funcție de rezultatul solicitării AJAX care ar putea cauza erori în șirurile JSON. "

Să vedem ce se întâmplă în interiorul funcției:

 get_results ($ wpdb-> prepare ("selectați * din $ wpdb-> prefix author_subscribe unde email =% s", $ subscriber_email)); dacă (numără ($ email_result) == '0') $ activation_code = generate_random_act_code (); $ result = $ wpdb-> interogare ($ wpdb-> prepare ("INSERT INTO $ 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']); dacă $ result if (wp_mail ($ subscriber_email, "WP Author Subscription", "Faceți clic pe $ activation_link pentru a activa"))) echo json_encode (array ("succes" => );  altceva echo json_encode (array ("error" => "Eroare de e-mail"));  altceva echo json_encode (array ("error" => "Emailul există deja"));  altceva echo json_encode (array ("error" => "Introduceți e-mail valid"));   a muri(); ?>

Apoi, odată ce utilizatorul face clic pe link-ul de activare din e-mail, acesta va fi direcționat înapoi la site-ul cu un mesaj de succes de activare, iar adresa de e-mail va fi încărcată în caseta de text. Verificarea activării se face în partea de sus a funcției de cod scurt. Am omis explicația mai devreme, acum este momentul să aruncăm o privire la acel cod în contribuitori funcţie.

 get_results ($ wpdb-> prepare ("selectați * din $ wpdb-> prefix author_subscribe unde activation_code =% s și status = 0"), $ activationCode); dacă $ ($ activationCheck)! = 0) $ activationResult = $ wpdb-> interogare ($ wpdb-> prepare ($ update_wpdb-> prefix author_subscribe set status = 1 where activation_code =% s " cod de activare); dacă ($ activationResult) $ confirmedEmail = $ activationCheck [0] -> email; $ actStatus = "Activarea cu succes"; $ actClass = "succes";  altceva $ actStatus = "Activarea a eșuat"; $ actClass = "eroare"; ?>

Un utilizator poate vizita direct pagina autorilor sau folosind link-ul de confirmare. Deci, mai întâi verificăm dacă confirmați-urmați este disponibil în URL pentru a afla dacă aceasta este o cerere de activare sau nu. Apoi căutăm o activare în tabela bazei de date pentru codul de activare furnizat în URL. Apoi, actualizăm starea de activare a utilizatorului și afișăm mesajul rezultat cu o clasă relativă CSS. Acum, întregul proces de abonare este finalizat. Acum, utilizatorul poate începe să urmeze autori.


Pasul 6 Urmărirea autorilor

Acum activarea este reușită și e-mailul dvs. este afișat în caseta de e-mail. Acesta este momentul în care puteți alege autori din listă și faceți clic pe "Urma" buton. Să vedem cum să facem ca un utilizator să urmeze un autor. O solicitare AJAX se va face de îndată ce faceți clic pe butonul de urmărire al unui anumit autor.

 

Fiecare autor are un buton de urmat în fața numelui său, care conține o clasă CSS numită urma. Deci, de fiecare dată când este apăsat un buton următor, $ JQ ( "urmeze "). Trăi (" clic") funcția va fi declanșată și vom putea obține doar butonul apăsat cu ajutorul $ JQ (aceasta). Apoi facem o nouă solicitare AJAX ca și mai devreme cu acțiunea follow_wp_authors.

Singura diferență aici este adăugarea unui parametru suplimentar numit author_id la cerere. Putem obține ID-ul autorului folosind date-autor atributul pe care l-am definit în secțiunea de afișare. Acum, să aruncăm o privire la codul PHP pentru manipularea acestei solicitări AJAX.

 

Trebuie să adăugăm două noi acțiuni pentru această solicitare AJAX, așa cum am făcut-o mai devreme. Functia follow_up_authors va conține codul utilizat pentru urmărirea unui autor. Deoarece nu are rost să explici din nou și repetat codul repetitiv, voi explica secțiunile necesare. Deci vă sugerăm să vă uitați la funcția din fișierul plugin în timp ce citiți prin tutorial. Partea inițială a funcției va verifica nonce, va valida e-mailul și va verifica activarea în baza de date. Să mergem mai departe.

Adăugarea utilizatorilor pentru urmărire

Deoarece folosim tabele personalizate în plugin-ul nostru, chiar dacă pe site există mulți autori, tabela noastră de autor va fi inițial goală. Deci, atunci când un utilizator face clic pe butonul Urmărire pentru un autor, putem verifica dacă autorul este disponibil în tabelul nostru. Dacă nu facem intrarea inițială prin inserarea autorului în tabel. Luați în considerare următorul cod:

 id; $ authorId = isset ($ _ POST ['autor_id'])? $ _POST ['author_id']: "; / * * Verificați dacă există autor și introduceți dacă nu este deja disponibil pentru a urma * / $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare > prefix autor_followers unde author_id =% d "), $ authorId); dacă (count ($ authorResult) == '0') $ result = $ wpdb-> interogare ($ wpdb-> prepare (" INSERT INTO  wpdb-> prefix author_followers (autor_id) VALUES (% d) ", $ authorId));?>

Primirea utilizatorilor urmăriți lista autorilor

 followed_authors; dacă $ subscribedAuthorList! = ") $ subscribedAuthorList = explode (", "$ subscribedAuthorList); altceva $ subscribedAuthorList = array (); $ subscribedAuthorList, $ autorId);?>

Recepționarea autorilor Lista de urmăriți și finalizarea Urmăriți

 get_results ($ wpdb-> prepare ("selectați * din $ wpdb-> prefix autor_followers unde author_id =% d"), $ authorId); dacă count ($ autorResult) == '1') if ($ autorResult [0] -> followers_list! = ") $ authorSubscribersArray = explode (", "$ autorResult [0] -> followers_list) $ autorSubscribersArray, $ subscriberID; // lista de utilizatori care urmează autorul specific $ followersList = implode ("," , $ authorSubscribersArray); // lista de autor urmată de utilizator specific $ subscribedAuthorList = implode ("," $ subscribedAuthorList); $ result = $ wpdb-> interogare ($ wpdb-> prepare ("update $ wpdb-> ($ wpdb-> prepare ("update $ wpdb-> prefix set de autor_subscribe urmat_authors =% ($ wpdb-> prefix) unde e-mail =% s "), $ subscribedAuthorList, $ subscriberEmail); echo json_encode (array (" status "=>" succes "))

Pasul 7 Dezactivarea autorilor

Dacă acest plugin trebuie să fie eficient, este posibil ca utilizatorii să aibă funcția de a dezactiva autorii și de a urma autorii în orice moment. Voi explica procesul de descalificare a unui autor. Deoarece este foarte similar cu următorul proces, am să omiteți codurile repetitive în explicație.

Butonul în linie cu toți autorii urmați va fi afișat ca Ca urmare a. Când plasați cursorul pe buton, textul se va schimba în culori diferite Nu mai urmări. Când faceți clic pe buton, o altă solicitare AJAX va fi făcută pentru a "dezactiva" autorul. Întrucât numai numele acțiunii este diferit de codul de mai sus, nu o voi include aici. Puteți să vă uitați $ JQ ( "următorul "). Trăi (" clic", funcția () în followjs fişier.

Funcția utilizată pentru a dezactiva utilizatorul este unfollow_wp_authors. Acest cod este similar cu funcția următorului autor. Putem pune codul comun într-o singură funcție în viitor dacă sunteți dispus să extindeți pluginul. În secțiunea Autori urmați, am adăugat autorul în listă dacă nu este deja disponibil. În acest caz, vom elimina autorul din listă dacă există deja. Codul de mai jos vă arată modificările comparativ cu funcția următorului autor.

  valoarea $) if ($ authorId == $ value) unset ($ subscribedAuthorList [$ key]);  foreach ($ autorSubscribersArray ca $ cheie => valoarea $) if ($ subscriberID == valoarea $) unset ($ authorSubscribersArray [$ key]); ?>

Puteți vedea că în loc să împingem autori la matrice, le eliminăm folosind funcția de dezactivare.


Pasul 8 Încărcarea autorului a informațiilor următoare

Inițial, adresa de e-mail va fi goală când încărcați pagina cu lista de autor, deoarece nu avem o procedură de identificare a utilizatorului curent. Apoi, utilizatorul trebuie să introducă e-mailul și să apese pe butonul de încărcare pentru a obține lista cu următoarele detalii ale fiecărui utilizator. Aceasta va fi o altă solicitare AJAX similară celei anterioare și puteți să vă uitați la cod folosind $ JQ ( "# loadFollowers"). Trăi ( "clic", funcția () . Voi explica secțiunea de rezultate a solicitării, deoarece este puțin diferită de cea anterioară.

 

Să aruncăm o privire la funcția de încărcare a următorului listă de autor din partea serverului:

 get_results ($ wpdb-> prepare ("selectați * din $ wpdb-> prefix author_subscribe unde email =% s și status = 1"), $ subscriber_email); dacă (numără ($ email_result) == '1') $ subscriberID = $ email_result [0] -> id; $ authorResult = $ wpdb-> get_results ($ wpdb-> prepare ("selectați * din $ wpdb-> prefix author_subscribe unde id =% d"), $ subscriberID); dacă (numără ($ autorResult)! = '0') $ userFollowedAuthors = $ autorResult [0] -> follow_authors; $ userFollowedAuthors = explode (",", $ userFollowedAuthors); echo json_encode (array ("autori" => $ userFollowedAuthors));  altceva echo json_encode (array ("error" => "Introduceți e-mail valid"));   a muri(); ?>

Acum, utilizatorii sunt abonați la serviciu și pot urmări și dezactiva autori ori de câte ori doresc. Partea finală și cea mai importantă a tutorialului este trimiterea de e-mailuri către adepți atunci când un post este publicat de un autor. Să începem.


Pasul 9 Trimiterea de e-mailuri când sunt publicate mesajele

Trebuie să declanșăm o acțiune atunci când orice utilizator publică o nouă postare. WordPress oferă un set de acțiuni numite Post Status Transitions pentru a obține această funcționalitate. Am creat patru tranziții, care ar putea fi declanșate atunci când publicați un post.

 

Acțiunile de mai sus vor apela notify_author_followers funcție de fiecare dată când un post este transformat într-o stare publicată dintr-unul din statele noi, în proiect, în așteptare sau în viitor. Deci, să trimitem e-mailuri folosind notify_author_followers funcţie.

 post_author; $ autorDisplayName = get_the_author_meta ('display_name', $ publishedPostAuthor); $ authorsFollowers = $ wpdb-> get_results ($ wpdb-> prepare ("selectați * din $ wpdb-> prefix autor_followers where author_id =% d"), $ publishedPostAuthor); dacă (numără (authorsFollowers) == '1') $ authorsFollowersList = $ authorsFollowers [0] -> followers_list; dacă $ ($ autoriFollowersList! = ") $ authorsFollowersEmails = $ wpdb-> get_results ($ wpdb-> prepare (" selectați e-mailul de la $ wpdb-> prefix author_subscribe unde id în (% s) ", $ authorsFollowersList); $ bccList = "; foreach ($ autoriFollowersEmails ca $ key => $ emailObject) $ bccList. = $ emailObject-> e-mail. "";  $ bccList = substr ($ bccList, 0, -1); $ postMessage = "guid">

$ Post-> POST_TITLE

"$ emailHeaders. =" De la: WP urmați autori "\ r \ n"; $ emailHeaders = "Bcc: $ bccList". "\ r \ n"; add_filter ("wp_mail_content_type", create_function ("", return "text / html"; dacă wp_mail ("[email protected]", "Postare nouă de la $ authorDisplayName", $ postMessage, $ emailHeaders)) ?>

Am finalizat procesul de creare a unui plugin WordPress de bază pentru a urma autorii. Ori de câte ori este publicată o postare, urmașii vor fi anunțați. Este la fel de simplu ca asta.


Concluzie

A trebuit să creez un tutorial lung care să explice totul în crearea acestui tip de plugin folosind AJAX. Acesta este încă la nivelul său cel mai de bază. În calitate de utilizator, a

Cod