Cum să AJAX-dacă comentariile dvs. WordPress

Cum să AJAX-dacă comentariile dvs. WordPress / Wordpress și dezvoltare web

Implicit, sistemul de comentare WordPress este nefericit - una dintre cele mai mari obiecții mele fiind că pentru a posta un comentariu, pagina trebuie să se reîmprospăteze. Ai putea trece la un sistem terț cum ar fi Livefyre sau Disqus 3 moduri de a încuraja comentarii pe Blogul dvs. Wordpress 3 moduri de a încuraja comentariile pe blogul dvs. Wordpress Obținerea de comentarii pe blog-ul dvs. este un motivator mare pentru a vă menține în continuare pe drumul lung, care este blogging-ul. Doar stiind ca cineva este acolo, apreciaza munca ta se simte minunat, dar nu ... Citește mai mult, dar dacă preferi să păstrezi totul în casă sau să faci altfel de personalizare, postarea comentariilor de AJAX este cel mai mic lucru pe care ar trebui să-l faci.

Puteți vedea un exemplu de lucru aici A te folosi de - când postezi un comentariu, nu vei părăsi pagina - în schimb o vom trimite printr-un apel AJAX și apoi vom trimite un mesaj rapid “mulțumesc” Notă înapoi. Citiți mai departe pentru un tutorial complet.

Pentru a utiliza funcții non-WordPress ca AJAX, vă rugăm să citiți tutorialul meu anterior Un tutorial cu privire la utilizarea AJAX în WordPress Un tutorial cu privire la utilizarea AJAX În WordPress AJAX este o tehnologie web remarcabilă care ne-a mutat dincolo de simplu “dați clic pe link, accesați altă pagină” structura Internetului 1.0. Aceasta permite site-urilor să preia dinamic și să afișeze conținut fără utilizatorul ... Citește mai mult și asigurați-vă că verificați toate articolele legate de WordPress.

Introducere

Există două părți separate necesare pentru a obține comentarii AJAX WordPress care funcționează, astfel încât să le explicăm mai întâi celor care vă oferă o imagine de ansamblu asupra întregului proces.

  • Unele Javascript din pagină care interceptează utilizatorul făcând clic pe Adauga comentariu butonul de trimitere, care face, de asemenea, un apel AJAX și, de asemenea, se ocupă de răspuns.
  • Un handler PHP care creează în acțiunea comment_post

Javascript

În primul rând, aceasta va avea nevoie de jQuery, la fel ca orice lucru interesant din dezvoltarea webului în zilele noastre. Dacă nu sunteți sigur dacă este deja încărcat, mergeți mai departe și treceți la codul Javascript și încercați oricum - dacă aveți Firebug și consola log spune “jQuery este nedefinit” când actualizați pagina, adăugați această linie în fișierul functions.php pentru a vă asigura că este încărcată.

funcția google_jquery () if (! is_admin ()) wp_deregister_script ('jquery'); wp_register_script ("jquery", ("http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"), fals); wp_enqueue_script ( 'jquery');  add_action ('wp_print_scripts', 'google_jquery');

Rețineți că este un mod elaborat de încărcare a jQuery deoarece vom folosi cea mai recentă versiune de pe Google CDNs, care este mai rapidă și mai actualizată decât cea inclusă în mod implicit cu WordPress - deci ar fi o idee bună să adăugați oricum chiar dacă jQuery este deja încărcat în altă parte.

Acum, pentru actualul Javascript care se va ocupa de formularul de comentariu, avem câteva opțiuni. Cel mai simplu este să lipiți codul în dvs. single.php șablon - presupunând că nu aveți niciun comentariu activat pentru pagini.

Alternativ, puteți să inserați într-un existent .js fișierul utilizat de tema dvs. sau creați un noi .js fișier în directorul tematic. Dacă alegeți să îl puneți în propriul fișier .js separat și să nu îl inserați direct în șablonul tematic, asigurați-vă că adăugați următoarele linii la functions.php, și rețineți că numele fișierului este presupus a fi ajaxcomments.js în rădăcina dosarului temei.

add_action ('init', 'ajaxcomments_load_js', 10); funcția ajaxcomments_load_js () wp_enqueue_script ('ajaxcomments', get_stylesheet_directory_uri (). '/ ajaxcomments.js'); 

Aici este Javascript pentru a manipula formularul de comentariu (sau îl puteți vedea pe pastebin):

Pentru a rupe codul, vom crea mai întâi obiecte jQuery din formularul de comentariu (care presupune că forma dvs. de comentariu are codul css implicit “commentform”), și adăugând un panou informativ gol deasupra acestuia pe care îl vom folosi ulterior pentru a afișa mesaje utilizatorului despre progresul înregistrării comentariului.

commentform.submit este folosit pentru a "deturna" butonul de trimitere. Apoi, serializăm datele formularului (transformăm-o într-o singură linie lungă de date), dă-o “Prelucrare” mesajul către utilizatorul din panoul de informații și continuați cu o solicitare AJAX. Solicitarea AJAX este un format standard, dar nu este într-adevăr în sfera acestui tutorial astăzi - este suficient să spui că reacționează fie la un succes, fie la o eroare, și elimină formularul dacă reușește să împiedice același comentariu postat accidental de două ori. Reglați mesajele și erorile, după cum este cazul, sau adăugați un stil adecvat stilului de corespondență al temei, dacă doriți ca mesajele de eroare să iasă într-un fel. Ultima linie - return false - împiedică completarea acțiunii implicite a formularului.

PHP Handler

În cele din urmă, avem nevoie de ceva pentru a împiedica reîmprospătarea paginii și pentru a trimite răspunsul adecvat utilizatorului, precum și pentru a anunța administratorul dacă comentariul are nevoie de moderare sau să notifice autorul unui comentariu nou. Pentru aceasta, am cârlig în comment_post acțiune care apare imediat după ce a fost adăugată la baza de date și a detecta dacă a fost o solicitare AJAX. Adăugați-o la dvs. functions.php fişier:

(De asemenea, disponibil la acest pastebin)

add_action ('comment_post', 'ajaxify_comments', 20, 2); ($ _ SERVER ['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') // Dacă cererea AJAX Apoi se comută ($ _ SERVER $ HTTP_X_REQUESTED_WITH ' comment_status) caz '0': // anunțați moderatorul comentariului neaprobat wp_notify_moderator ($ comment_ID); cazul "1": // Comentariu aprobat echo "succes"; $ commentdata = & get_comment ($ comentariu_ID, ARRAY_A); $ Post = & get_post ($ commentdata [ 'comment_post_ID']); wp_notify_postauthor ($ comentariu_ID, $ commentdata ['comment_type']); pauză; implicit: ecou "error";  Ieșire; 

Probleme la fața locului

Dacă pagina este încă răcoritoare în loc să postezi prin AJAX, este probabil să fie una din cele două probleme. Una - este posibil să nu fi încărcat jQuery. Instalați Firebug Cum se instalează Firebug pe IE, Safari, Chrome și Opera Cum se instalează Firebug pe IE, Safari, Chrome & Opera Citiți mai multe sau activați instrumentele dezvoltatorului Chrome și verificați erorile din jurnalul consolei. Dacă jQuery nu este găsit, reveniți la secțiunea JavaScript și citiți primul bit când adăugați jQuery la tema. A doua posibilitate este că tema ta face ceva special pentru formularul de comentarii și ID-ul său nu mai este “commentform”. Verificați codul sursă, apoi reglați var commentform = $ ('# commentform') line în JavaScript pentru a fi ID-ul corect - ar putea funcționa.

Ca întotdeauna, sunt în jur pentru a ajuta cât mai mult posibil, dar vă rugăm să postați link-uri către un exemplu de URL unde pot să arunc o privire rapidă sau să post pe forumul Answers din MakeUseOf dacă comentariile acestui post sunt închise. se bucura AJAXified comentariile!

Explorați mai multe despre: comentarea online, programarea, dezvoltarea web.