Reklāma

ajax wordpress komentāriPēc noklusējuma WordPress komentēšanas sistēma ir bēdīgi neatbilstoša - viens no maniem lielākajiem iebildumiem ir tas, ka, lai ievietotu komentāru, lapa ir jāatsvaidzina. Jūs varētu pārslēgties uz tādas trešās puses sistēmu kā Livefyre [Broken URL Removed] vai Disqus 3 veidi, kā mudināt komentēt jūsu WordPress emuāruKomentāru saņemšana savā emuārā ir lielisks motivētājs, lai jūs turpinātu turpināt darbu ar emuāriem. Tikai zinot, ka kāds ir ārpus mājas, novērtēt jūsu darbu jūtas lieliski, bet ne ... Lasīt vairāk , bet, ja jūs vēlētos visu saglabāt mājās vai veikt kaut kādus citus pielāgojumus, AJAX komentāru ievietošana ir vismazākais, kas jums jādara.

Šeit varat redzēt šī darba piemēru Izmantot - kad jūs ievietojat komentāru, jūs nepametīsit šo lapu, tā vietā mēs to nosūtīsim, izmantojot AJAX zvanu, un pēc tam ātri nosūtīsim “Paldies”Ņemiet vērā. Lasiet pilnu apmācību.

Lai kā AJAX izmantotu funkcijas, kas nav WordPress, lūdzu, izlasiet manu iepriekšējā apmācība Apmācība par AJAX izmantošanu WordPress

AJAX ir ievērojama tīmekļa tehnoloģija, kas mūs aizveda ārpus vienkāršās “noklikšķināšanas saites, dodieties uz citu lapu” Internet 1.0 struktūra. Tas ļauj vietnēm dinamiski ielādēt un parādīt saturu bez lietotājs ... Lasīt vairāk , un noteikti apskatiet visus ar WordPress saistītos rakstus.

Ievads

Ir nepieciešamas divas atsevišķas daļas, lai AJAX WordPress komentāri darbotos, tāpēc vispirms izskaidrosim tos, lai sniegtu pārskatu par visu procesu.

  • Daži Javascript lapā, kas pārtver lietotāju, noklikšķinot uz Pievienot komentāru Iesniegt pogu, kas arī padara to par AJAX zvanu un apstrādā arī atbildi.
  • PHP apdarinātājs, kurš piesakās pie komentāru_post darbības

Javascript

Pirmkārt, tas būs vajadzīgs jQuery, tāpat kā mūsdienās kaut kas attālināti aizraujošs tīmekļa attīstībā. Ja nezināt, vai tas jau tiek ielādēts, dodieties uz Javascript kodu un izmēģiniet to jebkurā gadījumā - ja jums ir Firebug un konsoles žurnālā ir rakstīts “jQuery nav definēts”, Atsvaidzinot lapu, pēc tam pievienojiet šo rindu failam function.php, lai pārliecinātos, ka tā tiek ielādēta.

funkcija 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"), viltus); wp_enqueue_script ('jquery'); }} add_action ('wp_print_scripts', 'google_jquery');

Ņemiet vērā, ka tas ir sarežģīts jQuery ielādes veids, jo mēs izmantosim jaunāko versiju no Google CDN, kas ir ātrāka un ātrāka datums, nekā tas, kas pēc noklusējuma iekļauts WordPress - tāpēc, iespējams, būtu ieteicams to pievienot, pat ja jQuery jau ir ielādēts citur.

Tagad mums ir dažas iespējas faktiskajam Javascript, kas apstrādā komentāru veidlapu. Vienkāršākais ir vienkārši ielīmēt kodu mapē single.php veidne - pieņemot, ka jums nav iespējots arī komentēšana lapām.

Alternatīvi, jūs varētu ielīmēt esošā .js failu, kuru izmanto jūsu motīvs, vai izveidojiet jauns .js failu motīvu direktorijā. Ja izvēlaties to ievietot atsevišķā .js failā un nevis ielīmēt to tieši motīva veidnē, noteikti pievienojiet savam funkcijas.php, un ņemiet vērā, ka tiek pieņemts faila nosaukums ajaxcomments.js motīvu mapes saknē.

add_action ('init', 'ajaxcomments_load_js', 10); funkcija ajaxcomments_load_js () {wp_enqueue_script ('ajaxcomments', get_stylesheet_directory_uri (). '/ ajaxcomments.js'); }

Šeit ir Javascript, lai apstrādātu komentāru veidlapu (vai arī jūs varat apskatiet to pamanin):

 // AJAXified komentēšanas sistēma. jQuery ('dokuments'). gatavs (funkcija ($) { var commentform = $ ('# commentform'); // atrodiet komentāra veidlapu. commentform.prepend ('
'); // pirms veidlapas pievienojiet informācijas paneli, lai sniegtu atsauksmes vai kļūdas. var statusdiv = $ ('# komentāru statuss'); // definējiet infopanel commentform.submit (function () { // Serializēt un glabāt formas datus mainīgā lielumā. var formdata = commentform.serialize (); // Pievienojiet statusa ziņojumu. statusdiv.html ('

Notiek apstrāde...

'); // Darbības URL no komentāra veidlapas. var formurl = commentform.attr ('darbība'); // Nosūtiet veidlapu ar datiem. $ .ajax ({ tips: 'post', URL: formurl, dati: formdata, kļūda: funkcija (XMLHttpRequest, textStatus, errorThrown) { statusdiv.html ('

Iespējams, vienu no laukiem esat atstājis tukšu vai pārāk ātri sūtāt

'); }, panākumi: funkcija (dati, textStatus) { if (dati == "veiksme") statusdiv.html ('

Paldies par komentāru. Mēs novērtējam jūsu reakciju.

'); cits. statusdiv.html ('

Lūdzu, nedaudz uzgaidiet, pirms ievietojat savu nākamo komentāru

'); commentform.find ('textarea [nosaukums = komentārs]'). val (''); } }); atgriezties nepatiess; }); });

Lai sadalītu kodu, vispirms mēs izveidojam jQuery objektus komentāra formā (kas pieņem, ka jūsu komentāra veidlapai ir noklusējuma css ID “commentform”), un virs tā pievienojot tukšu informācijas paneli, kuru vēlāk izmantosim, lai parādītu lietotājam ziņojumus par viņu komentāru publicēšanas gaitu.

commentform.submit tiek izmantots, lai “nolaupītu” iesniegšanas pogu. Pēc tam mēs sērijveidojam veidlapas datus (pārvēršam tos vienā garā datu rindā), sniedzam “Apstrāde”Ziņojumu lietotājam šajā informācijas panelī un turpiniet ar AJAX pieprasījumu. AJAX pieprasījums ir: standarta formāts, bet ne īsti šīs apmācības jomā šodien - pietiek pateikt, ka tā reaģē uz panākumiem vai kļūda un, ja izdodas, aizpilda veidlapu, lai nejauši netiktu publicēts viens un tas pats komentārs divreiz. Pielāgojiet ziņojumus un kļūdas pēc vajadzības vai pievienojiet motīva stila lapai piemērotu stilu, ja vēlaties, lai kļūdas ziņojumi kaut kā izceltos. Pēdējā rindiņa - atgriezt nepatiesu - neļauj veidlapai aizpildīt tās noklusējuma darbību.

PHP apstrādātājs

Visbeidzot, mums ir nepieciešams kaut kas, lai novērstu lapas atsvaidzināšanu un atbilstošas ​​atbildes nosūtīšanu atpakaļ lietotājam kā arī paziņojot administratoram, ja komentāru nepieciešams moderēt, vai paziņojot jauna komentāra autoram. Šim nolūkam mēs pievienojamies komentāru_post darbība, kas notiek tūlīt pēc tās pievienošanas datu bāzei, un noteikt, vai tas bija AJAX pieprasījums. Pievienojiet to savam funkcijas.php fails:

(Pieejams arī pie šī pamani)

add_action ('comment_post', 'ajaxify_comments', 20, 2); funkcija ajaxify_comments ($ comment_ID, $ comment_status) { if (! tukšs ($ _ SERVER ['HTTP_X_REQUESTED_WITH']) && strtolower ($ _ SERVER ['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { // Ja AJAX pieprasījums, tad. slēdzis ($ comment_status) { gadījums '0': // paziņo moderatoram par neapstiprinātu komentāru. wp_notify_moderator ($ comment_ID); gadījums '1': // Apstiprināts komentārs. atbalss "panākumi"; $ commentdata = & get_comment ($ comment_ID, ARRAY_A); $ post = & get_post ($ commentdata ['comment_post_ID']); wp_notify_postauthor ($ comment_ID, $ commentdata ['comment_type']); pārtraukums; noklusējums: atbalss "kļūda"; } Izeja; } }

Vietas problēmas

Ja lapa joprojām tiek atsvaidzināta, nevis publicēta caur AJAX, tā, iespējams, ir viena no divām problēmām. Viens - iespējams, jums nav ielādēta jQuery. Uzstādīt Firebug Kā instalēt Firebug IE, Safari, Chrome un Opera Lasīt vairāk vai iespējot Chrome izstrādātāju rīkus un pārbaudiet, vai konsoles žurnālā nav kļūdu. Ja jQuery nav atrasts, dodieties atpakaļ uz sadaļu JavaScript un izlasiet pirmo daļu par jQuery pievienošanu savam motīvam. Otra iespēja ir tāda, ka jūsu tēma komentēšanas formai piešķir kaut ko īpašu, un tās ID vairs nav “komentāra forma”. Pārbaudiet avota kodu, pēc tam noregulējiet var commentform = $ ('# commentform') rindā JavaScript, lai būtu pareizs ID - tas varētu darboties.

Kā vienmēr, es esmu gatavs palīdzēt, cik vien iespējams, taču, lūdzu, ievietojiet saites uz URL paraugu, kur es varētu ātri apskatīt.

Džeimsam ir mākslīgā intelekta bakalaura grāds, un viņš ir sertificēts CompTIA A + un Network +. Viņš ir galvenais MakeUseOf izstrādātājs un brīvo laiku pavada, spēlējot VR peintbolu un galda spēles. Kopš mazotnes viņš būvēja datorus.