Crearea unui plugin pentru a adăuga voturi la comentariile dvs. WordPress Utilizând AJAX

WordPress are un sistem de postare bun, care poate fi extins astfel încât WordPress să poată fi folosit pentru a construi o mulțime de site-uri diferite, mai degrabă decât doar un blog. WordPress are, de asemenea, un sistem de comentare foarte extensibil. Sistemul de comentare al WordPress poate fi extins în moduri diferite pentru a fi utilizat în site-urile WordPress. Sistemul de comentare poate fi folosit ca un forum de examinare dacă site-ul WordPress urmează să fie transformat într-un sistem de catalog de produse. Sistemul de comentare poate fi folosit ca răspuns la întrebări dacă site-ul WordPress va fi folosit pentru un site de întrebări și răspunsuri. Deci, sistemul de comentare în WordPress poate fi modelat sau extins pentru a oferi funcționalitatea ta la poate îmbunătăți site-ul complet construit pe WordPress. În acest articol vom scrie un plugin pentru a adăuga un sistem de votare pe comentariile care ar putea fi utile dacă sistemul de comentare este folosit într-un mod diferit, ca în exemplele de mai sus și multe altele pe care le puteți gândi.


Pasul 1 Crearea pluginului

Să începem acum prin crearea pluginului. În a noastră wp-content vom crea un dosar pentru plugin-ul numit commentsvote. În interiorul dosarului commentsvote creați un fișier commentsvote.php care va fi fișierul principal al pluginului nostru. Apoi vom adăuga antetul plugin-ului după cum urmează, care va ajuta WordPress să identifice plugin-ul nostru și să îl arate în lista de plugin-uri din WordPress 'admin. Antetul este după cum urmează.

 

Odată ce adăugăm antetul, vom putea vedea pluginul nostru în lista de pluginuri, după cum urmează. Acum putem activa pluginul.

Acum, să setăm câteva variabile și scripturi pe care le vom folosi în pluginul nostru. Noi creăm constante pentru a defini calea pluginului și adresa URL a pluginului care poate fi folosită în diferite locuri în plugin după cum urmează.

 

De asemenea, pe măsură ce vom avea funcționalitatea de a adăuga voturi prin AJAX, vom avea nevoie de un fișier JavaScript. Pentru a adăuga fișierul JavaScript creăm a js folder în dosarul nostru plugin și creați un commentsvote.js fișier în el. Odată ce am creat fișierele necesare, structura de directoare pentru plugin va arăta după cum urmează.

Apoi intrăm în scenele astfel încât fișierele JS să fie încărcate de motorul WordPress după cum urmează.

  admin_url ('admin-ajax.php')));  add_action ('wp_enqueue_scripts', voteme_enqueuescripts); ?>

Pasul 2 Înțelegerea unei anumite funcții WordPress pentru comentarii

WordPress oferă suport pentru comentariile meta în care putem stoca și prelua unele meta date legate de comentariu. Vom păstra voturile asupra comentariilor ca comentariu meta folosind aceste funcții de sprijin. Prin urmare, vom vedea ce sunt aceste funcții pe care le oferă WordPress.

Prima funcție pe care o vom vedea este get_comment_meta (). Această funcție este similară cu get_post_meta (). Această funcție are primul argument ca ID de comentariu, al doilea argument ca și numele meta-cheie, al treilea argument care, dacă este setat la true, returnează valoarea ca șir, dacă este setat la fals sau la stânga necompletat va returna o matrice din toate valorile acelei chei.

Pentru mai multe informații, vizitați get_comment_meta () în Codul WordPress.

Cealaltă funcție pe care o vom folosi este update_comment_meta. Această funcție are patru argumente care sunt ID-ul comentariului, tasta meta, valoarea meta și valoarea anterioară.

Pentru mai multe informații, vizitați update_comment_meta () în Codul WordPress.


Pasul 3 Afișarea voturilor curente de lângă comentariul

Acum, să adăugăm numărul de voturi și un link de vot de lângă fiecare comentariu, astfel încât utilizatorii să voteze comentariile. Pentru aceasta mai întâi scriem o funcție care va crea linkul și îl va returna ca un șir.

 „; $ completelink. = ''$ Link-ul.'„; $ completelink. = '
„; întoarcere $ completelink; ?>

În această funcție primim ID-ul curent al comentariului utilizând funcția WordPress get_comment_ID (). Apoi vom obține numărul de voturi pe comentariu folosind funcția get_comment_meta ().

Apoi vom crea o legătură în care numim funcția JavaScript commentsvote_add () pe care o vom implementa în etapele de mai jos.

Apoi, adăugăm acest link la fiecare comentariu folosind filtrul COMMENT_TEXT. Ne prindem în filtru COMMENT_TEXT și adăugați link-ul după cum urmează.

 

Acum, dacă vizitați pagina postului individual, veți vedea legătura votului după cum urmează.


Pasul 4 Crearea manualului AJAX pentru adăugarea de voturi pe comentarii

Acum, odată ce am creat codul pentru a afișa linkul, să creăm manipulatorii AJAX în WordPress pentru a face față cererii. Aplicatorul AJAX de solicitare este după cum urmează.

 '$ VotecountNew.'
„; // Returnați matricea String (rezultate $); // crearea apelului Ajax pentru WordPress add_action ('wp_ajax_nopriv_commentsvote_ajaxhandler', 'commentsvote_ajaxhandler'); add_action ('wp_ajax_commentsvote_ajaxhandler', 'commentsvote_ajaxhandler'); ?>

În agentul AJAX, verificăm mai întâi codul nonce. Apoi, obținem ID-ul de comentariu și obținem numărul de voturi curente privind comentariul folosind funcția get_comment_meta (). Odată ce se face acest lucru, incrementăm numărul curent cu unul și apoi actualizăm meta folosind funcția update_comment_meta ().

Apoi vom întoarce din nou valoarea actualizată din mânerul AJAX.


Pasul 5 Votul pe comentarii prin AJAX

Acum, odată ce link-ul nostru și manipulatorii AJAX sunt terminate, trebuie doar să scriem funcția JavaScript pentru a efectua apelul AJAX. Funcția este după cum urmează.

 funcția commentsvote_add (comment_id, nonce) jQuery.ajax (tip: 'POST', url: votecommentajax.ajaxurl, data: action: 'commentsvote_ajaxhandler', commentid: comment_id, nonce: nonce , XMLHttpRequest) var linkofcomment = '# commentsvote-' + comentariu_id; jQuery (linkofcomment) .html ("); jQuery (linkofcomment) .append (data); eroare: functie (MLHttpRequest, textStatus, errorThrown) errorThrown););

Funcția primește în mod normal ID-ul de comentariu și face un apel AJAX la dispozitivul AJAX. După ce handlerul AJAX returnează valoarea pe care o recuperează funcția JavaScript div a comentariului și își actualizează conținutul cu noul număr de voturi. Acum se poate face clic pe vot pentru a adăuga un vot la comentariu.


Pasul 6 Permite numai utilizatorilor logați să voteze

Acum, să îmbunătățim pluginul pentru a oferi o opțiune administratorului pentru a permite numai utilizatorilor conectați să voteze comentarii. Pentru a face acest lucru, vom crea mai întâi o pagină de setări pentru plugin-ul nostru. Următorul este codul pentru a crea o pagină de setări.

  

> Votarea permite numai utilizatorilor conectați
> Votarea permisă utilizatorilor care nu sunt autentificați

Acum, în funcție de setare, vom verifica dacă utilizatorul este conectat sau nu înainte de a afișa link-ul de vot sau de a stabili punctul de conectare la pagina de conectare. Deci, funcțiile adaptate commentsvote_showlink () și commentsvote_ajaxhandler () va arata dupa cum urmeaza.

 „; $ completelink. = ''$ Link-ul.'„; $ completelink. = '
„; altceva $ register_link = site_url ('wp-login.php', 'login'); $ completelink = '
"Voturi". "" ".
„; return $ completelink; funcția commentsvote_ajaxhandler () if ! wp_verify_nonce ($ _POST ['nonce'], 'commentsvote_nonce')) ieșire ("Ceva rău"); $ commentid = $ _POST ['commentid']; $ votecount = get_comment_meta ($ commentid, '$ comment = _commentsvote ', adevărat)! = "? get_comment_meta ($ commentid, '_commentsvote', true): '0'; $ votecountNew = $ votcount + 1; update_comment_meta ($ commentid, '_commentsvote', $ votecountNew); $ rezultate. =“
'$ VotecountNew.'
„; // Returnați matrița String (rezultate $); ?>

Deci, acum, în cazul în care administratorul face ca este obligatoriu ca utilizatorii conectați să poată vota numai și dacă utilizatorul nu este autentificat, el va fi arătat la pagina de autentificare după cum urmează.


Pasul 7: Afișarea celor mai multe comentarii despre postare

Acum, să adăugăm funcționalitatea pentru a afișa sub fiecare post posturile sale votate de top. Pentru a face acest lucru, va trebui mai întâi să preluăm comentariile pentru post în ordinea descrescătoare a voturilor. Nu există nici un mod direct de a sorta comentariile pe baza meta lor, prin urmare, vom scrie o interogare personalizată pentru același lucru. Vom scrie următoarea funcție pentru a face acest lucru.

 funcția commentsvote_get_top_voted_comments ($ post_id) $ commentids = array (); global $ wpdb; $ request = "selectează * din $ wpdb-> comentarii, $ wpdb-> commentmeta unde $ wpdb-> comments.comment_post_ID =". $ post_id. "AND $ wpdb-> comments.comment_ID = $ wpdb-> commentmeta.comment_ID ȘI $ wpdb-> commentmeta.meta_key = '_commentsvote' ORDER BY $ wpdb-> commentmeta.meta_value + 0 DESC;"; $ comments = $ wpdb-> get_results (solicitare $); foreach ($ comentariile ca $ comment) array_push ($ commentids, $ comment-> comment_ID);  return $ commentids; 

Această funcție are postări ca intrare și apoi execută o interogare personalizată pe wp_comments și wp_commentmeta pentru a obține lista celor mai votate comentarii pentru postare.

Apoi adăugăm o funcție la filtru continutul după cum urmează pentru a arăta extrasul de comentariu și voturile de sub post.

 funcția show_top_voted_comments ($ content) $ result = ""; $ post_ID = get_the_ID (); $ commentids = commentsvote_get_top_voted_comments ($ post_ID); dacă (count ($ commentids)> 0) $ result = "Top Comentarii pentru acest post:
"foreach ($ commentids ca $ commentid) $ votecount = get_comment_meta ($ commentid, '_commentsvote', true)! ="? get_comment_meta ($ commentid, '_commentsvote', true): '0'; $ result = get_comment_excerpt ($ commentid). '('. $ votecount. ')'.
„; retur $ conținut. $ rezultat; add_filter ('the_content', show_top_voted_comments);

Acum, dacă vom vedea postarea va arăta după cum urmează.


Concluzie

În cazul în care WordPress este folosit pentru diferite tipuri de site-uri, sistemul de bază și funcționalitățile sale ar putea să nu fie suficiente pentru site. Dar, deoarece sistemul WordPress este foarte extensibil, putem scrie pluginuri ca cele de mai sus pentru a oferi funcționalități suplimentare pentru a ne satisface nevoile. Deci, distrați-vă în timp ce extindeți site-ul dvs. WordPress!

Cod