דף הבית » טריקים וטיפים, סקירת תבניות

להסיר פינגים וטראקבקים בעזרת פילטרים

14 בינואר 2011 | מאת רמי | תגובה אחת | תגיות: , , , , , ,

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

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

מגיבים

מגיבים

הקוד

את הקוד הבא יש להוסיף לקובץ functions.php בערכת העיצוב שלכם:

// Strips out trackbacks/pingbacks
function strip_trackbackss_pingbacks( $var ) {
    if ( $var->comment_type == 'trackback' || $var->comment_type == 'pingback' ) { return false; }
    return true;
}

// Updates the comment number for posts with trackbacks
function filter_comments( $posts ) {
    foreach ( $posts as $key => $p ) {
        if ( $p->comment_count <= 0 ) { return $posts; }
        $comments = get_approved_comments((int)$p->ID);
        $comments = array_filter( $comments, "strip_trackbackss_pingbacks" );
        $posts[$key]->comment_count = sizeof( $comments );
    }
    return $posts;
}
add_filter( 'the_posts', 'filter_comments', 0);

// Updates the count for comments and trackbacks
function filter_trackbacks( $comms ) {
    global $comments, $trackbacks;
    $comments = array_filter( $comms, "strip_trackbackss_pingbacks" );
    return $comments;
}
add_filter( 'comments_array', 'filter_trackbacks', 0);

// Updates the new comments number
function filter_comments_number( $count ) {
    global $id;
    if ( empty( $id )) { return $count; }
    $comments = get_approved_comments((int)$id);
    $comments = array_filter( $comments, "strip_trackbackss_pingbacks" );
    return sizeof( $comments );
}
add_filter( 'get_comments_number', 'filter_comments_number' );

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

מאת רמי

אחראי על אתר וורדפרס בעברית ועל תרגום ושחרור גרסאות וורדפרס בעברית. מפתח ליבה, בכל גרסה החל מגרסה 2.8, מפתח מוביל בגרסה 4.4 ובגרסה 4.6. מספק שירותי פיתוח אתרים, פיתוח תוספי וורדפרס לסטרטאפים ופיתוח כלים למפתחי וורדפרס - GenerateWP.com.

תגובה אחת »

  • חתול כותב :

    אני חושב שהערתי על זה כבר בעבר.
    שורות קוד ארוכות נחתכות אצלי כך שאני לא יכול לראות את כל הקוד.

הוסף תגובה !

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

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>