22
באוגוסט
2009

וורדפרס: איך לא להציג את כל הקטגוריות של הפוסט?

מאת: מאור ברזני | תגובות: 9 | נושאים: וורדפרס
תגיות: , , |

אני לא יודע כמה מכם ייעזרו בקוד הזה, אך לעולם אין לדעת.

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

מתי עשוי לעלות כזה צורך? למשל אם יש לכם תבנית מגזין כלשהי, הבנויה בצורה כזאת שכדי להציג פוסט/ים בתור "מאמרים ראשיים" (מה שנקרא לפעמים "Featured Posts") עליכם ליצור קטגוריה עם שם מסוים (למשל: Featured) ולשייך גם אליה את הפוסטים שתרצו שיסומנו כראשיים. מה שקורה במצב הזה הוא שגולש שנכנס אל הפוסט, רואה את הפוסט כמתויג בקטגוריות הנושאיות השונות, אבל גם בקטגוריה Featureed, שהמטרה שלה היא רק להציג פוסטים כראשיים. לא בטוח שיש לכם צורך ממשי שהפוסט יופיע כמשוייך לקטגוריה הזו.

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

הקוד הקצר והפשוט הבא יעזור לנו, ו"יעלים" מרשימת הקטגוריות אליהן משויך הפוסט את הקטגוריה שנבחר שלא להציג. אם אנחנו מדברים על עמוד של פוסט יחיד, קובץ התבנית השייך אליו הוא בד"כ single.php. נאתר בתוך הקובץ הזה את ההפנייה לפונקציה ()the_category, שהיא בעצם זו המציגה את כל הקטגוריות אליהן משויך הפוסט, ונחליף אותה בקוד הבא. בדוגמה שלפנינו, הקטגוריה שנבחרה היא קטגוריה מס' 26, ואפשר כמובן להחליף בכל מספר שאתם צריכים.

1
2
3
4
5
6
7
<?php
     foreach((get_the_category()) as $category) {
    if ($category->cat_ID != '26') {
        echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> ';
    }
     }
?>

אפשר להשתמש גם בשם הקטגוריה במקום במספר ה- ID שלה. במקרה הזה, נשתמש בקוד הזה, כאשר במקום 'out' נכתוב את שם הקטגוריה שנרצה לסנן מהתצוגה בפוסט:

1
2
3
4
5
6
7
<?php
     foreach((get_the_category()) as $category) {
    if ($category->cat_name != 'out') {
        echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> ';
    }
     }
?>

הקוד יציג את רשימת שמות הקטגוריות עם לינק לכל אחת מהן (לזה אחראית שורה 4 בקוד).
אפשר כמובן להחליף את ()the_category בקוד הזה בכל מקום שנרצה, בין אם זה בעמוד הבית (לרוב, index.php) או בעמודי הארכיון, החיפוש וכדו'.

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

שתפו גם אחרים:
  • email
  • Print
  • RSS
  • Facebook
  • Twitter
  • LinkedIn
  • Google Bookmarks
  • Live
  • PDF
  • MySpace
  • del.icio.us
  • Digg
  • Technorati
  • Yahoo! Bookmarks
  • Yahoo! Buzz
  • Add to favorites

9 תגובות »

  • מאת ariel:

    וואלה, הפוסט הזה עזר לי היום.
    תודה רבה.

  • בכיף. טוב לדעת שהפוסט לא ישב פה סתם באוויר.. :-)

  • מאת ariel:

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

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

  • מאת ariel:

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

    תודה רבה
    :)

  • ככלל, כשמעתיקים קוד מהרשת, תמיד כדאי להדביק אותו קודם בנוטפאד ואז להעתיק אותו משם שוב אל תוך עורך הקוד שלך.
    בד"כ זה פותר את הבעיות האלה של רווחים לבנים.

  • מאת חגי:

    הי,
    רציתי שבדף הבית לא יופיעו פוסטים מקטגוריה מסויימת
    אם הבנתי נכון, בקובץ index.php, שנמצא תחת ספריית תבנית העיצוב שלי, אני מאתר את the_category, מדביק את השורות הנ"ל
    ומשנה לפי שם או מספר הקטגוריה שלי.
    לא עבד, מה עלי לעשות?
    תודה

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

    מה שאתה רוצה הוא משהו אחר ולכן זה לא עובד לך באופן שבו מימשת את זה.
    אם אתה רוצה שבדף הבית לא יוצגו פוסטים מקטגוריה מסוימת , אתה צריך לאתר את תחילת הלופ בקובץ index.php, בד"כ השורה –
    if ( have_posts()

    ולפניה להוסיף הגבלה בצורה –
    query_posts(cat=-3)
    כאשר מינוס 3 הכוונה היא לא להציג את קטגוריה מספר 3 למשל.

  • מאת חגי:

    תודה,
    אכן הסתדר.

פיד RSS לתגובות בפוסט | טראקבק


הוסף תגובה

You can add images to your comment by clicking here.

TechnoCraft - פתרונות אינטרנט


אֶקְסְפֶּרִימֶנְט דוֹט אֶפֶס - וורדפרס, תוכן, טכנולוגיה ועוד כמה דברים - מופעל באמצעות WordPress | פתרונות אינטרנט