
کد کوچولوهای دوست داشتنی ۳ : دیدگاه ها
در برخی از وبسایت ها و بخصوص وبلاگها، به قسمت نظرات (کامنت ها) اهمیتی داده نمی شود. این در حالی است که نظرات نشان دهنده تعامل شما با مخاطبان تان است؛ پس اهمیت ندادن به این قسمت به معنی اهمیت ندادن به خوانندگان و دیدگاههای آنها می باشد. سیستم دیدگاه ها در وردپرس (کامنت ها – Comments) در اوج سادگی بسیار پیشرفته و کاربر پسند بوده و هرگونه تغییراتی که بخواهیم را، می توانیم با چند خط کد کوچک بر روی آنها اعمال کنیم. ما در این مطلب چند هک جالب را به شما معرفی کنیم تا به قسمت نظرات، کیفیتی بدهید که لایق مخاطبان تان است:
۱٫ اضافه کردن لینک های اکشن
مساله:
شما چه به خوانندگان وب سایتتان اجازه گذاشتن نظر بدهید یا نه، گاهی به ویرایش دیدگاههای نوشته شده نیازمندید. علاوه بر ویرایش، به حذف یا علامت گذاری برخی از کامنت ها به عنوان اسپم احتیاج دارید. وردپرس به عنوان پیش فرض با قرار دادن دکمه “ویرایش” امکان تغییر متن نظر را به شما می دهد اما دکمه “حذف” و “اسپم” را در اختیار شما قرار نمی دهد. بیایید آنها را اینگونه اضافه کنیم:
راه حل:
ابتدا شما باید یک فانکشن ایجاد کنید. سپس کد زیر را در فایل functions.php کپی کنید:
1 2 3 4 5 6 |
function delete_comment_link($id) { if (current_user_can('edit_post')) { echo '| <a href="'.admin_url("comment.php?action=cdc&c=$id").'">del</a> '; echo '| <a href="'.admin_url("comment.php?action=cdc&dt=spam&c=$id").'">spam</a>'; } } |
پس از ذخدره ساختن functions.php، فایل comments.php را باز کنید و کد زیر را به جایی که مایلید لینک های “حذف” و “اسپم” نمایش داده شوند، اضافه کنید. این کدها به لوپ نظرات منتقل خواهند شد. در بیشتر پوسته ها، شما می توانید edit_comment_link()
را پیدا کنید. کد را دقیقا به بعد از آن منتقل سازید:
1 |
delete_comment_link(get_comment_ID()); |
۲٫ خلاص شدن از لینک های HTML
مساله:
اسپمرها همه جا هستند. مطمئنا شما هم از لینک هایی که در قسمت نظرات توسط این افراد گذاشته می شود که به خود متن هیچ ارتباطی ندارند، شکار هستید! وردپرس به صورت پیش فرض URLها را به لینک تبدیل می کند. اگر شما نیز از دیدگاههای لینک دار خسته اید، کد زیر می تواند به شما کمک کند.
راه حل:
به راحتی فایل function.php را باز کرده و کد زیر را در آن کپی کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// This will occur when the comment is posted function plc_comment_post( $incoming_comment ) { // convert everything in a comment to display literally $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']); // the one exception is single quotes, which cannot be #039; because WordPress marks it as spam $incoming_comment['comment_content'] = str_replace( "'", '&apos;', $incoming_comment['comment_content'] ); return( $incoming_comment ); } // This will occur before a comment is displayed function plc_comment_display( $comment_to_display ) { // Put the single quotes back in $comment_to_display = str_replace( '&apos;', "'", $comment_to_display ); return $comment_to_display; } add_filter( 'preprocess_comment', 'plc_comment_post', '', 1 ); add_filter( 'comment_text', 'plc_comment_display', '', 1 ); add_filter( 'comment_text_rss', 'plc_comment_display', '', 1 ); add_filter( 'comment_excerpt', 'plc_comment_display', '', 1 ); // This stops WordPress from trying to automatically make hyperlinks on text: remove_filter( 'comment_text', 'make_clickable', 9 ); |
به محض ذخیره کردن این فایل، از شر لینک و HTMLهای ناخوشایند خلاص شوید.
۳٫ نمایش تعداد کل نظرات و تعداد میانگین نظرات برای هر پست
مساله:
همانطور که می دانید، تعداد نظرات دریافت شده را می توان در قمست پیشخوان وردپرس مشاهده کرد. متاسفانه راهی برای نشان دادن چنین اطلاعاتی برای عموم در حالت عادی وجود ندارد. نشان دادن تعداد کل نظرات در وبسایت شما و تعداد میانگین نظرات برای هر پست می تواند بسیار مفید باشد؛ مخصوصا اگر به دنبال فرصت های تبلیغاتی در وبسایتتان هستید.
راه حل:
1 2 3 4 5 6 7 8 9 |
<?php $count_posts = wp_count_posts(); $posts = $count_posts->publish; $count_comments = get_comment_count(); $comments = $count_comments['approved']; echo "There's a total of ".$comments." comments on my blog, with an average ".round($comments/$posts)." comments per post."; ?> |
۴٫ نمایش تعداد خاصی از نظرات اخیر
وردپرس به صورت پیش فرض، از ابزارکی استفاده می کند که هر تعداد از نظرات دریافتی که می خواهید را نمایش می دهد. این عالی است، اما شاید بخواهید این کاربرد را بدون ابزارک انجام دهید.
راهکار :
این هک بسیار ساده می باشد. کد زیر را هر جایی که می خواهید یک تعداد خاصی از نظرات نمایش داده بشوند، کپی کنید. فراموش نکنید که عدد مورد نظر را در انتهای خط چهارم وارد کنید. ( پس از عبارت LIMIT
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $pre_HTML =""; $post_HTML =""; global $wpdb; $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10"; $comments = $wpdb->get_results($sql); $output = $pre_HTML; $output .= "\n<ul>"; foreach ($comments as $comment) { $output .= "\n<li>".strip_tags($comment->comment_author) .":" . "<a href=\"" . get_permalink($comment->ID)."#comment-" . $comment->comment_ID . "\" title=\"on ".$comment->post_title . "\">" . strip_tags($comment->com_excerpt)."</a></li>"; } $output .= "\n</ul>"; $output .= $post_HTML; echo $output; ?> |
۵٫ جلوگیری آسان از نظرات اسپم
مساله:
نظرات اسپم برای همه ما مشکلی بزرگ می باشد. اکسیمت راه حل خوبی به نظر می رسد، اما چرا به جای شناسایی نظراتِ اسپمرها به عنوان اسپم، خود اسپمرها را بلاک نکنیم؟! این کد به دنبال HTTP یی است که درخواست از آن می آید و اگر این ارجاع دهنده تعریف نشده یا اشتباه باشد آن را بلاک می کند.
راه حل:
کد زیر را در فایل functions.php کپی کنید:
1 2 3 4 5 6 7 |
function check_referrer() { if (!isset($_SERVER['HTTP_REFERER']) || $_SERVER['HTTP_REFERER'] == “”) { wp_die( __('Please enable referrers in your browser, or, if you\'re a spammer, bugger off!') ); } } add_action('check_comment_flood', 'check_referrer'); |
همین! به محض ذخیره ساختن این فایل، وبسایت شما دارای سطح جدیدی از محافظت در برابر اسپم ها می باشد.
۶٫ نمایش نوشته های بدون دیدگاه!
مساله:
گاهی برخی مطالب شما بازخورد خوبی نداشته اند و شما می خواهید پس از مدتی نظر کاربران خود را در مورد آنها بدانید. کافیست لیست نوشته های بدون دیدگاه را نمایش دهید و بازدیدکننده را ترغیب به بازدید و ارائۀ دیدگاه کنید.
راه حل:
کد زیر را در جایی که می خواهید مطالب بدون دیدگاه نمایش داده شوند، کپی کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php global $wpdb; $query = " SELECT * FROM {$wpdb->prefix}posts WHERE {$wpdb->prefix}posts.post_type = 'post' AND {$wpdb->prefix}posts.post_status = 'publish' AND {$wpdb->prefix}posts.comment_count = 0 ORDER BY {$wpdb->prefix}posts.post_date DESC LIMIT 5; "; $pageposts = $wpdb->get_results($query, OBJECT); ?> <?php if ($pageposts): ?> <?php global $post; ?> <ul> <?php foreach ($pageposts as $post): ?> <?php setup_postdata($post); ?> <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </ul> <?php endif; ?> |
این هم کد کوچولوهای دوست داشتنی وردپرس با طعم فارسی در مورد نظرات. چطور بود؟
سلام ممنون از همه ی زحمات و اطلاعات عالی و بدرد خورتون
یک سئوال که ممنون می شم اگر راهنمایی کنید اگر بخوام در وبلاگ تمام نظراتی که در پاسخ به یک کاربر خاص داده شده را نمایش دهم چه باید بکنم
عالیه عالی
عالی و مفیــــــــــد ممنون از شما .
ممنون.۲ تاش خوب بود
با سلام و عرض خسته نباشید …
دوستان یک سوال داشتم اینکه سایت من طوری درست شده که کاربر به صفحه ی اول و دسته بندی ها دسترسی داره ولی وقتی بخواد وارد موضوعی بشود ازشون میخواد که لاگین بشن و این کار را برای کاربران سخت کرده برای نظر دادن میخواستم بدونم حالا روشی هست که یک بخش ارسال نظر رو کاری کنم که حتما نخواد به ادامه مطلب بریم و یا به سایدبار اضافه کنم تا همه کاربران بتوانند به سادگی نظر ارسال کنند؟؟
ممنون میشم راهنمایی کنید بنده را
salam. Faghat mishe goft 20e
eyval
سلام
کدهای تون واقعا عالی بودن من خیلی وقت بود دنبال این کدها میگشتم
درود بر شما
بسیار مفید و عالی
سپاس
سلام من یه تازه کارم ولی یه چیزایی حالیم هست.
این function.php کجاست دقیقا که کد رو توش بزارم ؟؟؟
راهنماییم کنید. مرسی
مهراد در تاریخ ۷ مهر ۱۳۹۱:
مهراداد عزیز شما یه فایل با Notepad ایجاد کن بعد اسمش رو بزار functions.php یا اینکه از یه پوسته دیگه کپی کن بعد کد هاش رو با نت پد پاک کن و کد خودت رو اضاف کن
خیلی عالی بودند. ممنون
خواهش میکنم
خیلی عالی بودند و کار من رو را انداختند مخصوصا مورد ۴
مرسی