كيفية : فصل التعقيبات عن التعليقات في WordPress 2.7 و أعلى

في الإصدار رقم 2.7 من WordPress ظهرت العديد من المميزات الجديدة في ملفات القوالب و ذلك لتسهيل عملية تنسيق القوالب بشكل أفضل . و من المميزات الجديدة التي ظهرت في تلك النسخة هي تعديل نظام ظهور التعليقات و التي من خلالها يمكن التحكم بكيفية ظهورها بشكل كامل و كانت تشمل ظهور التعليقات المنبثقة Threaded Comments و التعديلات التي جرت داخل ملفات WordPress التي تقوم بتشغيل النظام .

و لكن المميزات الجديدة كانت قد سببت بعض المشاكل في التعديلات التي يقوم بها المستخدمون و منها عملية فصل التعقيبات Trackbacks عن تعليقات الزوار .

هذا الدليل متعلق فقط بالقوالب التي تستخدم نظام قوالب WordPress 2.7 و أعلى , أي أنه لا يمكن عمل ذلك في القوالب التي تستخدم WordPress 2.6 و أقل .

سنستخدم ملف comments.php من قالب Default الافتراضي في WordPress و يمكن بعد ذلك عمل نفس الخطوات على القوالب الأخرى . في البداية يجب عمل تعديل بسيط داخل ملف single.php بالبحث عن الكود التالي :

1
<?php comments_template(); ?>

و استبداله بالكود التالي :

1
<?php comments_template('', true); ?>

يقوم التعديل السابق بإبلاغ القالب بتكوين التعليقات بناءً على نوعها (تعليقات أو تعقيبات) .

ثم نقوم بتعديل ملف comments.php ,و نبحث عن الكود التالي :

1
<?php if ( have_comments() ) : ?>

و نقوم بإضافة السطر التالي أسفله مباشرة:

1
<?php if ( ! empty($comments_by_type['comment']) ) : ?>

و الآن نقوم بتقسيم التعليقات عن التعقيبات داخل ملف Comments.php , بالبحث عن الكود التالي :

1
2
3
<ol class="commentlist">
<?php wp_list_comments(); ?>
</ol>

و نقوم باستبدال الكود السابق بالتالي :

1
2
3
4
<ol class="commentlist">
<?php wp_list_comments('type=comment'); ?>
</ol>
<?php endif; ?>

يقوم الكود السابق باستبدال العرض الافتراضي للتعليقات بعرض التعليقات فقط و هذا الجزء سيتم فيه عرض التعليقات . أما التعقيبات فسنقوم بتكوين العرض الخاص بها في الخطوة التالية .
الكود التالي سنقوم بإضافته مباشرة بعد التعديل السابق أي بعد endif و ذلك لعرض التعقيبات :

1
2
3
4
5
6
7
<?php if ( ! empty($comments_by_type['pings']) ) : ?>
<h3 id="pings">التعقيبات Trackbacks</h3>
<ol class="commentlist">
<?php wp_list_comments('type=pings&callback=list_pings'); ?>
</ol>
 
<?php endif; ?>

و أخيراً نقوم بإضافة الكود التالي و المسئول عن فصل التعليقات عن التعقيبات في ملف functions.php :

1
2
3
4
<?php function list_pings($comment, $args, $depth) {
$GLOBALS['comment'] = $comment; ?>
<li id="comment-<?php comment_ID(); ?>"><?php comment_author_link(); ?>
<?php } ?>

و بالتالي ستتم عملية فصل التعقيبات عن التعليقات . هناك تعديل بسيط يمكن عمله إذا كنت تريد أن يقوم الموقع بعرض عدد التعليقات فقط و ليس عدد التعليقات و التعقيبات معاً و ذلك بإضافة الكود التالي في ملف functions.php :

1
2
3
4
5
6
7
8
9
10
11
12
<?php
add_filter('get_comments_number', 'comment_count', 0);
function comment_count( $count ) {
if ( ! is_admin() ) {
global $id;
$comments_by_type = &separate_comments(get_comments('status=approve&post_id=' . $id));
return count($comments_by_type['comment']);
} else {
return $count;
}
}
?>