דף הבית » טריקים וטיפים, מומלצים

להחיל את הטקסונומיות תגים וקטגוריות על עמודים

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

טקסונומיות - תגים וקטגוריות

טקסונומיות - תגים וקטגוריות

הקוד

כדי להחיל את הטקסונומיות תגים וקטגוריות על עמודים, יש להוסיף את הקוד הבא לקובץ functions.php בערכת העיצוב שלכם:

function register_tags_and_categories_for_pages() {
    register_taxonomy_for_object_type( 'post_tag', 'page' );
    register_taxonomy_for_object_type( 'category', 'page' );
}
add_filter( 'init', 'register_tags_and_categories_for_pages' );

הסבר

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

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

מאת רמי

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

16 תגובות »

  • יצחק כותב :

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

  • יצחק כותב :

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

  • רמי כותב :

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

    function custom_get_posts( $query ) {
        $query->set( 'post_type', array( 'post', 'page' ) );
        return $query;
    }
    add_filter( 'pre_get_posts', 'custom_get_posts' );

    תגיד לי אם זה עוזר לך.

  • יצחק כותב :

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

  • רמי כותב :

    התכוונת ל- Front-End. תגיד לי אם הקוד עוזר.

  • יצחק כותב :

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

  • רמי כותב :

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

    function custom_get_posts( $query ) {
        if ( !is_admin() ) {
            $query->set( 'post_type', array( 'post', 'page' ) );
        }
        return $query;
    }
    add_filter( 'pre_get_posts', 'custom_get_posts' );
  • יצחק כותב :

    זה יותר טוב, אבל עדיין העמודים מוגדרים גם כפוסטים,
    זה מתבטא בכמה מקומות,
    א. אם אני מגדיר שבעמוד המאמרים יוצגו רק פוסטים, האתר יציג את הכל,
    ב. כנ"ל בתפריט הבחירה במערכת הניהול, אם לבחור עמוד ראשי סטטי -> עמוד פוסטים, יופיעו בבחירה גם העמודים…
    ג. אם אני ארצה להפריד בווידג'טים את העמודים מהפוסטים, העמודים יופיעו בשני המקומות…
    איך שאני מבין צריך להגדיר שהעמודים הם עמודים והם לא פוסטים…
    מקווה שאני לא משגע אותך מידי הרבה… 🙂
    תודה רבה רבה לך!!!

  • עובדיה משה כותב :

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

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

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

  • יוסי ג'אנה כותב :

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

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

    לא נבלבל אנשים כאן…

    +1

  • יוסף כותב :

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

  • רמי כותב :

    יוסף, הפוסט עונה על שאלת, רק במקום הפרמטר 'page' תכניס את השם של ה- custom pot type שיצרת.

  • מוטי סייג כותב :

    תודה על המדריך, רציתי לשאול היכן בדיוק בקובץ הfunctions.php,יש להדביק את הקוד.תודה רבה לכל המסייעים.

  • מוטי סייג כותב :

    להלן הקובץ כפי שהוא נראה אצלי אשמח אם תגיד לי היכן להדביק הקוד

    <?php
    function theme_admin_notice() {
        echo &quot;" . sprintf( __( 'Your hosting currently use version of PHP %s. To get this theme worked properly you should ask your hosting provider to turn on at least version of PHP5 on your hosting.' ), phpversion() ) . "";
    }
    if (version_compare(phpversion(), "
    5.0.0", "
  • עומר כותב :

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

  • אורית כותב :

    היי
    האתר שלנו מבוסס על עמודים
    היום הוספתי פוסט ואינני רואה אותו מפורסם מדוע?

הוסף תגובה !

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

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