בוורדפרס ישנה פונקציה מובנית בשם wp_count_comments המאפשרת לקבל את המספר הכולל של התגובות עבור פוסט מסויים לפי המזהה שלו (ID). הפונקציה מחזירה את המספר הכולל של התגובות הממתינות לאישור, התגובות שכבר אושרו, תגובות ספאם, תגובות שבפח זבל ואף את מספר התגובות הכולל.
אך הפונקציה אינה מאפשרת להשיג את מספר התגובות במקרים מיוחדים, לדוגמה עבור קטגוריה ספציפית או עבור מספר תגיות / קטגוריות. עלינו לבנות שאילתא משל עצמינו למסד הנתונים בכדי לקבל את התוצאות הרצויות.
בפוסט (מתורגם) זה נציג מספר סניפטים המאפשרים לקבל את מספר התגובות הכולל של אתר או של פוסט מסויים ובנוסף את מספר התגובות עבור כמה מצבים מיוחדים.
המספר הכולל של התגובות עבור מזהה פוסט מסויים
הקוד הבא יציג את מספר התגובות הכולל עבור פוסט בעל מזהה (ID) מספר 43:
$comments = wp_count_comments( 43 );
echo 'Comments for post 43<br />';
echo 'Comments in moderation: ' . $comments->moderated . '<br />';
echo 'Comments approved: ' . $comments->approved . '<br />';
echo 'Comments in Spam: ' . $comments->spam . '<br />';
echo 'Comments in Trash: ' . $comments->trash . '<br />';
echo 'Total Comments: ' . $comments->total_comments . '<br />';
המספר הכולל של התגובות באתר וורדפרס
קוד זה יציג את המספר הכולל של התגובות לאתר הנוכחי:
$comments = wp_count_comments();
echo 'Comments for site <br />';
echo 'Comments in moderation: ' . $comments->moderated . '<br />';
echo 'Comments approved: ' . $comments->approved . '<br />';
echo 'Comments in Spam: ' . $comments->spam . '<br />';
echo 'Comments in Trash: ' . $comments->trash . '<br />';
echo 'Total Comments: ' . $comments->total_comments . '<br />';
מספר התגובות הכולל עבור Multisite
הקוד הקודם מאפשר לקבל את מספר התגובות עבור הבלוג הנוכחי (גם אם באתר Multisite), אך אם אנו מעוניינים לקבל את מספר התגובות הכולל לבלוג אחר (בעל מזהה 2) באתר Multisite עלינו להשתמש בקוד הבא:
global $wpdb;
$blog_prefix = $wpdb->get_blog_prefix(2);
$count = $wpdb->get_results( "SELECT comment_approved, COUNT(*) AS num_comments FROM {$blog_prefix}comments GROUP BY comment_approved", ARRAY_A );
אם נשתמש ב print_r( $count );
נקבל תוצאה בסגנון הבא:
array(
[0] => array(
[comment_approved] => 1
[num_comments] => 5
)
[1] => array(
[comment_approved] => spam
[num_comments] => 1
)
[2] => array(
[comment_approved] => trash
[num_comments] => 1
)
)
הצגת מספר התגובות עבור מחבר מסויים (Author)
נוכל להשתמש בשאילתא הבאה על מנת לקבל את מספר התגובות הכולל שכתב מחבר מסויים באתר וורדפרס:
global $wpdb;
$blog_prefix = $wpdb->get_blog_prefix(2);
$count = $wpdb->get_results( "SELECT comment_approved, COUNT(*) AS num_comments FROM {$blog_prefix}comments GROUP BY comment_approved", ARRAY_A );
מספר התגובות שנוצרו בתאריך מסויים
global $wpdb;
$where = $wpdb->prepare( "
WHERE YEAR(comment_date) = '%d'
AND MONTH(comment_date) = '%d'
AND DAYOFMONTH(comment_date) = '%d'",
2018, 10, 14
);
$count = $wpdb->get_results( "SELECT comment_approved, COUNT(*) AS num_comments FROM {$wpdb->comments} $where GROUP BY comment_approved", ARRAY_A );
ניתן להשתמש גם בצורה הבאה:
$where = $wpdb->prepare( "WHERE DATE(comment_date) = '%s'", '2013-10-29' );
מספר התגובות בין תאריכים שונים
global $wpdb;
$where = $wpdb->prepare(
"WHERE comment_date BETWEEN '%s' AND '%s'",
'2013-10-15',
'2013-10-30'
);
$count = $wpdb->get_results( "SELECT comment_approved, COUNT(*) AS num_comments FROM {$wpdb->comments} $where GROUP BY comment_approved", ARRAY_A );
מספר התגובות עבור הזמן הנוכחי (יום, חודש או שנה)
עבור היום הנוכחי:
global $wpdb;
$today = date("Y-m-d");
$where = $wpdb->prepare(
"WHERE DATE(comment_date) = '%s'",
$today
);
עבור החודש הנוכחי:
$today = getdate();
$where = $wpdb->prepare( "
WHERE YEAR(comment_date) ='%d'
AND MONTH(comment_date) = '%d'",
$today["year"],
$today["mon"]
);
עבור השנה הנוכחית:
$today = getdate();
$where = $wpdb->prepare( "
WHERE YEAR(comment_date) ='%d'
$today["year"]
);
בכדי לקבל את התוצאות עבור אלו:
$count = $wpdb->get_results( "SELECT comment_approved, COUNT(*) AS num_comments FROM {$wpdb->comments} $where GROUP BY comment_approved", ARRAY_A );
מספר תגובות הכולל בת עבור תגובת אב מסויימת
יש לשנות את מזהה התגובה בשורה מספר 2:
global $wpdb;
$where = $wpdb->prepare( "WHERE comment_parent = '%d'", 4);
$count = $wpdb->get_results( "SELECT comment_approved, COUNT(*) AS num_comments FROM {$wpdb->comments} $where GROUP BY comment_approved", ARRAY_A );
מספר התגובות לפי User ID
יש לשנות את מזהה המשתמש בשורה מספר 2:
global $wpdb;
$where = $wpdb->prepare( "WHERE user_id = '%d'", 1);
$count = $wpdb->get_results( "SELECT comment_approved, COUNT(*) AS num_comments FROM {$wpdb->comments} $where GROUP BY comment_approved", ARRAY_A );
מספר התגובות עבור Term ID's
הקוד הבא לצורך העניין יביא את הפוסטים הקיימים בקטגוריות בעלות המזהים 9 ו 11 ולאחר מכן נקבל את מספר התגובות הכולל עבור כל הפוסטים בקטגוריות אלו. ניתן להשתמש הקוד עבור תגיות או כל מונח בטקסונומיות שיצרתם:
global $wpdb;
$ids = array();
$posts = get_posts( array('category' => '9,11' ) );
foreach( $posts as $post )
$ids[] = $post->ID;
$ids = implode( ",", $ids );
$count = $wpdb->get_results( "
SELECT comment_approved, COUNT(*) AS num_comments
FROM {$wpdb->comments} WHERE comment_post_ID in ($ids)
GROUP BY comment_approved", ARRAY_A
);
אך במידה ואינכם משתמשים כלל בתגובות באתר הוורדפרס שלכם, תנו מבט בסניפט הבא המתאר בקצרה כיצד לבטל את התגובות בוורדפרס באופן מוחלט.
This post is translated from the following…