הצגת המספר הכולל של התגובות בוורדפרס

בפוסט זה נציג מספר אפשרויות לקבלה והצגה של מספר התגובות הכולל בוורדפרס עבור כמה מצבים.

בוורדפרס ישנה פונקציה מובנית בשם 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

רועי יוסף
רועי יוסף

מפתח וורדפרס, מאמין ביצירת הזדמנויות לעסקים קטנים, סטארטאפים נועזים ואנשים עצמאים לשנות את העולם. אוהב טיפוגרפיה, צבעים וכל מה שבינהם ומכוון לספק אתרי וורדפרס עם ביצועים גבוהים, תמיכה בכל הדפדפנים, בעלי קוד ולידי, סמנטי ונקי. צרו איתי קשר.

{ 0 תגובות… הוסף אחת }

השאירו תגובה

פעימות