سلام، دیروز تو نت داشتم چرخ میزدم دیدم علی آقای حاج محمدی یه پستی زده به عنوان “افزونه ارسال دیدگاه به صورت آژاکس” یکم رفتم تو بهر این افزونه و نصبش کردم اما کل استایل قالب جدیدی رو که طراحی کرده بودم رو زد بهم! گفتم چی کار کنیم چی کار نکنیم بیایم از یه هک استفاده کنیم. حالا ما از اون هک استفاده کردیم و کارمون راه افتاد گفتیم شاید همه این مشکل رو دارن پس بیایم اینجا هم آموزش رو بگذاریم.
بر فراگیری این آموزش خواندن را ادامه دهید.
قدم اول
کدهای زیر را به فایل Functions.php اضافه کنید.
add_action('init', 'geniusboy_ajaxcomments_load_js', 10);
function geniusboy_ajaxcomments_load_js(){
wp_enqueue_script('ajaxValidate', get_stylesheet_directory_uri().'/js/jquery.validate.min.js', array('jquery'), '1.5.5');
wp_enqueue_script('ajaxcomments', get_stylesheet_directory_uri().'/js/ajax-comments.js', array('jquery', 'ajaxValidate'), '1.1');
}
add_action('comment_post', 'geniusboy_ajaxcomments_stop_for_ajax',20, 2);
function geniusboy_ajaxcomments_stop_for_ajax($comment_ID, $comment_status){
if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
//If AJAX Request Then
switch($comment_status){
case '0':
//notify moderator of unapproved comment
wp_notify_moderator($comment_ID);
case '1': //Approved comment
echo "success";
$commentdata=&get_comment($comment_ID, ARRAY_A);
$post=&get_post($commentdata['comment_post_ID']); //Notify post author of comment
if ( get_option('comments_notify') && $commentdata['comment_approved'] && $post->post_author != $commentdata['user_ID'] )
wp_notify_postauthor($comment_ID, $commentdata['comment_type']);
break;
default:
echo "error";
}
exit;
}
}
قدم دوم
باید یک کد جاوا اسکریپت بسازیم. یک فایل متنی با محتویات زیر ایجاد کنید و با نام ajax-comments.js ذخیره کنید.
jQuery('document').ready(function($){
var commentform=$('form[action$=wp-comments-post.php]');
commentform.prepend('<div id="geniusboy-ajax-info" ></div>');
var infodiv=$('#geniusboy-ajax-info');
commentform.validate({
submitHandler: function(form){
//serialize and store form data in a variable
var formdata=commentform.serialize();
//Add a status message
infodiv.html('<p>در حال پردازش...</p>');
//Extract action URL from commentform
var formurl=commentform.attr('action');
//Post Form with data
$.ajax({
type: 'post',
url: formurl,
data: formdata,
error: function(XMLHttpRequest, textStatus, errorThrown){
infodiv.html('<p >شما باید تمامیفیلدها را پر کنید.</p>');
},
success: function(data, textStatus){
if(data=="success")
infodiv.html('<p >متشکریم برای دیدگاه. پاسخ شما در انتظار بررسی است.</p>');
else
infodiv.html('<p >خطا در پردازش فرم شما.</p>');
commentform.find('textarea[name=comment]').val('');
}
});
}
});
});
قدم سوم
حالا باید به فیلدهای دیدگاه کلاسهای زیر را اضافه کنید. برای این کار فایل comments.php را باید ویرایش کنید.
- برای ورودی نویسنده دیدگاه این کلاس را اضافه کنید
class="required" - برای ورودی ایمیل نویسنده دیدگاه این کلاس را اضافه کنید
class="required email" - برای ورودی وبسایت دیدگاه این کلاس را اضافه کنید
class="url" - برای ورودی متن دیدگاه این کلاس را اضافه کنید
class="required"
قدم چهارم
استایل دادن به پیغامهای جی کوئری. این استایلها را به فایل style.css خود اضافه کنید.
.geniusboy-ajax-error{
border:1px solid #f9d9c9;
padding:5px;
color:#ff3311;
}
.geniusboy-ajax-success{
border:1px solid #339933;
padding:5px;
color:#339933;
}
label.error{
float:none !important;
padding-right:5px;
color:#ff3311;
}
تقریبا کار تمام هست و فقط مانده که فایل جاوا اسکریپتی که در بالا ساختیم را به پوشه js در پوشه قالب اصلی وب خودمان بارگذاری کنیم و یک فایل جاوا اسکریپت دیگر را از اینجا دانلود و به همان پوشه js قالب اضافه کنیم تا دیدگاهها آژاکس شود.

سلام، خسته نباشید
داداش قالب من پوشه Functions.php رو نداره، چیکار باید بکنم ؟
ممنون
خودتون ایجاد کنید
برای من نصب میشه
ولی تغییری ایجاد نمیشه
مراحل رو کامل انجام دادین؟
من که میدونم نصب کنم کار نمیکنه دوست هم ندارم کدی چیزی اضافه کنم.
هر جور تمایل دارید.
ممنون نابغه جان؛ مطالب سایتت برای ما مبتدیها خیلی عالیه
از این نظر هم خوشم اومد !! مثل خودم میمونه، حوصله نداره خودش رو به درد سر بندازه
نظر لطف شماست.
ممنون
انجام دادم اما نشد، چرا ؟
فایلها رو در پوشههای js قالب قرار دادین؟
یعنی چی ؟
فایلهای js رو تو روت آپلود کردم بعد لینک دادم به قالب
مثل این :
فایلهای js باید در پوشه قالب آپلود بشن!
سلام ، مرسی وحید جان . عالی بود .. افزونهاش رو هم که آقا علی معرفی کردند ..
موفق باشید ../.
خواهش میکنم سعیید جان!
سلام
من قبلا با این کدها کار کردم خوب نیستش در کل
کدی که دادین مشکل داره
اول باید && تبدیل به & بشن
دوم من ندیدم دوتا emptyempty یک جا بیاد (البته گفتم ندیدم شایدم اومدن (:)
سلام
ممنون از scriptهای خوبی که قرار میدید
یه موشکل با این script داشتم نمیدونم چرا قسمت نظراتش باز نمیشه در حالی که دیتابیسشم ساخته شده
متوجه منظور شما نشدم؟
همین کارم کردم اما بازم نشد…
پیشنهاد میکنم از افزونه ی این کار استفاده کنید.
سلام مرسی جالب بود
خواهش میکنم.
افزونه هم نصب کردم اما نشد…
چی بگم والا! شما اگه دوست دارین اطلاعات وبسایت رو بدین شاید بتونم کاری بکنم براتون!
چه اطلاعاتی نیاز دارین ؟
آدرس سایت و اطلاعات کاربری مدیر!
لطف دارین شما!
سلام
من زمان اینکه کد رو به آخر فانکشن اضافه میکنم این ارور بالای تمامیصفحات میاد !
add_action(‘init’, ‘geniusboy_ajaxcomments_load_js’, 10); function geniusboy_ajaxcomments_load_js(){ wp_enqueue_script(‘ajaxValidate’, get_stylesheet_directory_uri().’/js/jquery.validate.min.js’, array(‘jquery’), ’1.5.5′); wp_enqueue_script(‘ajaxcomments’, get_stylesheet_directory_uri().’/js/ajax-comments.js’, array(‘jquery’, ‘ajaxValidate’), ’1.1′); } add_action(‘comment_post’, ‘geniusboy_ajaxcomments_stop_for_ajax’,20, 2); function geniusboy_ajaxcomments_stop_for_ajax($comment_ID, $comment_status){ if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == ‘xmlhttprequest’){ //If AJAX Request Then switch($comment_status){ case ’0′: //notify moderator of unapproved comment wp_notify_moderator($comment_ID); case ’1′: //Approved comment echo “success”; $commentdata=&get_comment($comment_ID, ARRAY_A); $post=&get_post($commentdata['comment_post_ID']); //Notify post author of comment if ( get_option(‘comments_notify’) && $commentdata['comment_approved'] && $post->post_author != $commentdata['user_ID'] ) wp_notify_postauthor($comment_ID, $commentdata['comment_type']); break; default: echo “error”; } exit; } }
درود!
فکر نکنم این پیغام خطا باشه! این همون کدی هستش که من قرار دادم.
توی لوکال تست کردید یا سرور؟
اگه سرور آدرس وبسایت رو قرار بدید تا بررسی کنم؟
سلام به نظرم بین تگهای php قرار ندادینش
یعنی یکبار بین تگهای قرار بدین بعد تست کنید..
توی سرور کد رو همون لحظه برداشتم …
راستش وارد نیستم این قایل فانکشن قالبم …
http://up.vbiran.ir/images/qnxtt0jwir77oownq542.zip
این افزونه رو امتحان کنید. افزونه ارسال دیدگاه به صورت آژاکس
ممنون
اما این افزونه بخش دیدگاه رو ارور میده …
سلام رفیق، میخواستم ببینم وقتی بعضی از قالبها را نص میکنیم یه خطایی میده
پرونده style وجود نداره!! یه همچین چیزی…منظورش چیه!؟ چطور میشه این مشکل و برطرف کرد؟!
خوب هر قالبی باید یه فایل style.css داخلش موجود باشه که اطلاعات قالب داخل اون باشه!
ممنون .. عالی بود..
خواهش میکنم عزیز