Language EN
חיפוש

איך ליצור ולבצע שאילתות על טקסונומיות מותאמות בוורדפרס

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

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

מהן טקסונומיות?

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

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

וורדפרס מגיעה עם שתי טקסונומיות מובנות:

  • קטגוריות: אלו היררכיות ומאפשרות תת-קטגוריות.
  • תגיות: אלו אינן היררכיות ומשמשות לתיאור פרטים ספציפיים של הפוסטים.

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

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

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

סוגי טקסונומיות

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

היא גם עוזרת לשפר את הניווט באתר.

1. טקסונומיות מובנות

כפי שצוין למעלה, לוורדפרס שתי טקסונומיות מובנות:

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

2. טקסונומיות מותאמות

טקסונומיות מותאמות מאפשרות למפתחים ליצור סוגי טקסונומיה משלהם.

כך ניתן להגיע לארגון תוכן מדויק יותר.

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

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

יצירת טקסונומיות מותאמות

יצירת טקסונומיה מותאמת בוורדפרס מתבצעת באמצעות הפונקציה register_taxonomy().

הוסיפו את הקוד לקובץ functions.php של תבנית הבת שלכם או ל-MU-Plugin.

תמיד הוסיפו קוד של טקסונומיות מותאמות לתבנית בת או ל-MU-Plugin. אל תערכו ישירות את קובץ ה-functions.php של תבנית האב, כי השינויים ימחקו בעדכון התבנית הבא.

הנה דוגמה ליצירת טקסונומיה מותאמת:

function create_movie_genre_taxonomy() {
    register_taxonomy(
        'genre',
        'post',
        array(
            'label'        => __( 'Genres' ),
            'rewrite'      => array( 'slug' => 'genre' ),
            'hierarchical' => true,
            'show_in_rest' => true,
        )
    );
}
add_action( 'init', 'create_movie_genre_taxonomy' );

בדוגמה זו נוצרת טקסונומיה היררכית בשם "Genre" עבור סוג התוכן "post".

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

תפריט צד בוורדפרס המציג טקסונומיה מותאמת Genre תחת תפריט הפוסטים

הפונקציה register_taxonomy() מקבלת שלושה ארגומנטים:

  1. $taxonomy – שם הטקסונומיה (אותיות קטנות, מקסימום 32 תווים, אותיות וקווים תחתונים בלבד).
  2. $object_type – סוג/י התוכן אליהם משייכים את הטקסונומיה (למשל 'post', 'page', או slug של סוג תוכן מותאם).
  3. $args – מערך ארגומנטים השולטים בהתנהגות הטקסונומיה, כולל label, labels, hierarchical, public, show_ui, show_in_rest, rewrite ועוד.

לרשימה המלאה של הארגומנטים, עיינו ב-תיעוד הרשמי של register_taxonomy().

הקפידו לא להשתמש במילים שמורות של וורדפרס (כגון type, status או name) כ-slug של הטקסונומיה. שימוש במילה שמורה יגרום לקונפליקטים ולהתנהגות בלתי צפויה.

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

צילום המסך הבא מציג את עמוד טקסונומיית Genre עם שלושה מונחים לדוגמה – Action, Drama ו-Comedy:

מסך ניהול טקסונומיה בוורדפרס המציג מונחי Genre כולל Action, Drama ו-Comedy

דוגמאות שימוש בפרויקטים אמיתיים

טקסונומיות שימושיות במגוון תרחישים מהעולם האמיתי, כולל:

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

שימוש בטקסונומיות בתבנית

לאחר יצירת הטקסונומיה המותאמת, ניתן להציג אותה בתבנית.

השתמשו בפונקציה get_terms() כדי לשלוף את כל המונחים בטקסונומיה:

$genres = get_terms( 'genre' );

foreach ( $genres as $genre ) {
    echo '<li>' . esc_html( $genre->name ) . '</li>';
}

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

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

בטקסונומיות היררכיות כמו דוגמת ה-Genre שלמעלה, וורדפרס מציגה checkboxes שמאפשרים לשייך מונחים לכל פוסט:

סרגל צד בעורך הבלוקים של וורדפרס המציג טקסונומיית Genre עם checkboxes עבור Action, Drama ו-Comedy

שאילתות טקסונומיה

ניתן גם לבצע שאילתות לפוסטים לפי טקסונומיה באמצעות המחלקה WP_Query.

לדוגמה, כך תשלפו את כל הפוסטים בז'אנר מסוים:

$query = new WP_Query( array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'genre',
            'field'    => 'slug',
            'terms'    => 'action',
        ),
    ),
) );

קוד זה מחזיר את כל הפוסטים השייכים לז'אנר "Action".

אם שיניתם את ה-slug של מונח לאחר שנוצר, זכרו לשמור מחדש את הגדרות הקישורים הישירים תחת הגדרות > קישורים ישירים. אחרת, ה-slug הישן עלול להישאר ב-cache ולגרום לשגיאות 404.

הארגומנט tax_query תומך במספר פרמטרים:

  • relation – הקשר הלוגי בין שאילתות טקסונומיה מרובות ('AND' או 'OR').
  • taxonomy – שם הטקסונומיה.
  • field – כיצד לזהות מונחים: 'slug', 'name', 'id' או 'term_taxonomy_id'.
  • terms – המונח/ים לסינון, בהתאם ל-field שנבחר.
  • include_children – האם לכלול מונחי ילד בטקסונומיות היררכיות.
  • operator – אופרטור ההשוואה ('IN', 'NOT IN', 'AND', 'EXISTS', 'NOT EXISTS').

הנה דוגמה לשאילתה שמסננת פוסטים לפי שתי טקסונומיות בו-זמנית – רק פוסטים בז'אנר "Action" וגם עם התווית "Featured":

$query = new WP_Query( array(
    'post_type' => 'post',
    'tax_query' => array(
        'relation' => 'AND',
        array(
            'taxonomy' => 'genre',
            'field'    => 'slug',
            'terms'    => 'action',
        ),
        array(
            'taxonomy' => 'label',
            'field'    => 'slug',
            'terms'    => 'featured',
        ),
    ),
) );

כדי לשלוף פוסטים שתואמים לאחת מהטקסונומיות במקום לשתיהן, שנו את ה-relation ל-'OR'.

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

'terms' => array( 'action', 'drama' )

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

היתרונות של שימוש בטקסונומיות

טקסונומיות מספקות מספר יתרונות לארגון תוכן בוורדפרס:

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

שאלות נפוצות

שאלות נפוצות על טקסונומיות בוורדפרס:

מה ההבדל בין קטגוריות לתגיות בוורדפרס?
קטגוריות הן היררכיות (ניתן ליצור בהן קשרי הורה-ילד) ונועדו לקיבוץ רחב של תוכן. תגיות הן שטוחות (לא היררכיות) ומשמשות לתיאור פרטים או נושאים ספציפיים בתוך פוסט. שתיהן הן טקסונומיות מובנות בוורדפרס.
מה עושה הארגומנט hierarchical בפונקציה register_taxonomy?
הגדרת hierarchical ל-true גורמת לטקסונומיה להתנהג כמו קטגוריות, כולל קשרי הורה-ילד בין מונחים ותצוגת checkbox בממשק הניהול. הגדרה ל-false גורמת לטקסונומיה להתנהג כמו תגיות, עם מבנה שטוח ושדה טקסט חופשי בממשק.
האם ניתן לשייך טקסונומיה מותאמת למספר סוגי תוכן?
כן. הארגומנט השני של register_taxonomy() מקבל מחרוזת של סוג תוכן בודד (למשל 'post') או מערך של סוגי תוכן (למשל array( 'post', 'page', 'my_cpt' )). כך ניתן לארגן תוכן ממספר סוגי תוכן שונים תחת אותה טקסונומיה.
כיצד לבצע שאילתה לפוסטים לפי מונח בטקסונומיה?
השתמשו בפרמטר tax_query בתוך WP_Query. ציינו את שם הטקסונומיה, את השדה לזיהוי (למשל 'slug'), ואת המונח/ים לסינון. ניתן גם לשלב מספר שאילתות טקסונומיה באמצעות פרמטר relation עם 'AND' או 'OR'.
האם טקסונומיות מותאמות צריכות show_in_rest כדי לעבוד עם עורך הבלוקים?
כן. כדי שהטקסונומיה המותאמת תופיע בסרגל הצד של עורך הבלוקים (גוטנברג), יש להגדיר 'show_in_rest' => true בארגומנטים של register_taxonomy(). ללא הגדרה זו, הטקסונומיה תהיה זמינה רק בעורך הקלאסי.

סיכום

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

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

למידע נוסף על טקסונומיות, עיינו בWordPress Developer Resources.

דיון ותגובות
8 תגובות  ]
  • אופיר 28 מרץ 2016, 14:05

    המדריך הזה נפתח כמדריך לנבוכים מתחילים:
    "אני מניח שרבים מכם נתקלו במושג טקסונומיות בוורדפרס ולחלקכם המושג אינו ברור…"

    אבל ממשיך למדריך הרבה יותר טכני מזה, שזה אחלה רק קהל שונה 🙂

  • אמיר 14 יולי 2016, 0:06

    תודה רבה על המדריך !

  • ניב אסרף 12 אוקטובר 2017, 21:35

    מדריך מרשים ומפורט, כיאה לתכנים בבלוג.
    יישר כוח גדול!

  • חגית 23 אפריל 2020, 15:56

    איך אפשר להציג בעמוד ארכיון של קטגוריה את כל תתי הקטגוריה שלו?

    • רועי יוסף 23 אפריל 2020, 16:26

      משהו בסגנון של הקוד הבא ב category.php אמור לעבוד:

      <?php
      if (is_category()) {
          $current_cat = get_query_var('cat'); ?>
          <ul>
              <?php wp_list_categories('&title_li=&show_count=1&child_of=' . $current_cat); ?>
          </ul>
      <?php } ?>

השאירו תגובה

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

Savvy WordPress Development official logo