בגירסה 2.3 פוצלה בוורדפרס מערכת תגיות מתוך מערכת הקטגוריות. אם בעבר נאלצו המשתמש לפתוח שלל קטגוריות על מנת לתייג את הפוסטים הרי שקיומה של מערכת התגיות במקביל למערכת הקטגוריות מאפשרת להחזיר את הקטגוריות לשימושן המקורי.
היררכיה של קטגוריות.
מבנה הקטגוריות בוורדפרס הוא היררכי, המשמעות של זה היא שניתן לבצע שירשור של קטגוריות ובכך לייצר למעשה את התשתית לאתר תוכן מלא.
דוגמה:
מחשבים
- מערכות הפעלה
גאדג'טים
משחקים
בידור
-
קולנוע
תיאטרון
טלוויזיה
כלכלה
-
וול סטריט
שוק ההון
טיפים לצרכן
הדוגמה כאן די מסבירה את עצמה – יצרנו שלוש קטגוריות ראשיות – מחשבים, בידור וכלכלה. לכל אחת מהקטגוריות הללו שירשרנו תתי קטגוריות משלה ובסך הכל בנינו כאן עץ בעל 2 רמות היררכיות (אם כי אפשר להמשיך הלאה במורד העץ).
כיצד קוראים לקטגוריות?
המקום העיקרי בו אנחנו רגילים לראות את רשימת הקטגוריות היא בד"כ בבר הצידי של הבלוג, כאשר בהתחלה בד"כ הן מופיעות כקטגוריות בלבד ואילו לאחר מכן, כאשר מצטברות רבות מהן – מעדיפים רוב המשתמשים להחליף אותן באחד מתוספי "ענן התגיות" על מנת לנצל טוב יותר את המקום.
עם זאת, וורדפרס מספקת מספר פונקציות חשובות לניהול הקטגוריות המאפשרות לשנות את צורת התצוגה של הקטגוריות, הכמות והחשיבות שלהן.
למה זה חשוב? כי בתצוגה היררכית כמודגם למעלה, אין טעם להציג את כל הקטגוריות ההיררכיות ויתכן שנעדיף להציג רק את הקטגוריות הראשיות בדף הראשי ואילו רק בדף של הקטגוריה עצמה נציג את כל הקטגוריות היורשות ממנה.
על הפעולה הזו אחראית הפונצקיה wp_list_categories וניתן לקרוא עליה בהרחבה בקודקס.
כברירת המחדל, הפונקציה מייצרת את רשימת הקטגוריות בצורה היררכית ומוסיפה ככותרת את המילה Category. עם זאת, הפונקציה יכולה לקבל מספר פרמטרים ובכך לאפשר הצגה מפולחת של התוצאות.
אני לא אכנס כאן לכל הפרמטרים, אבל אני כן אפרט את אלו שנראים לי חשובים. בכל מקרה, הפירוט בקודקס הוא די ברור ופשוט להבנה, ואם מישהו רוצה להרחיב את הידע שלו – הוא מוזמן.
orderby – סוג הסידור. – מאפשר לסדר את רשימת הקטגוריות באחת משלושת הדרכים הבאות:
Name – על בסיס שם הקטגוריה.
ID – על בסיס מזהה הקטגוריה
count – על סמך כמות הפוסטים המשוייכים לכל קטגוריה
Order – סדר לפי – מאפשר למיין את רשימת הקטגוריות לפי ערכים עולים (ASC) או יורדים (DESC) על פי גורם הסינון שהוגדר תחת orderby.
child_of – הפרמטר הזה שולט בהיררכיית הקטגוריות והוא אחד הפרמטרים החשובים ביותר. הפרמטר הלז מאפשר להציג אך ורק את תתי הקטגוריות של קטגוריה ספציפית, כך למשל, אם נגדיר שאנו רוצים רק את תתי הקטגוריות של "מחשבים" (מהדוגמא) נקבל בתוך הרשימה: מערכות הפעלה, גאדג'טים ומשחקים בלבד.
include / exclude – מאפשר לאלץ הופעה או השמטה של קטגוריה ספציפית מהרשימה, על בסיס המזהה שלה.
hierarchical – זהו פרמטר בוליאני המאפשר לקבוע האם הקטגוריות יוצגו כרשימה אחת אחידה או במבנה הירארכי.
show_count – פרמטר בוליאני המאפשר לקבוע האם יוצגו ליד כל קטגוריה מספר הפוסטים המשוייכים לה (ברירת מחדל – לא).
כאמור, יש עוד מספר פרמטרים, שאפשר לנצל, הקודקס מרחיב עוד יותר.
כיצד נקרא לקטגוריות?
השיטה הנפוצה לקרוא לרשימת הקטגוריות היא ע"י הכנסה של כל הפרמטרים הרלוונטיים אל תוך הסוגרים של הפונקציה.
wp_list_categories('orderby=id&show_count=1
&use_desc_for_title=0&child_of=8');
הבעיה בשיטה הזו, היא שבסופה מתקבלת מחרוזת ארוכה, לעיתים של מספר שורות שאינה ברורה לקורא. יתר על כן, ניסיון לשנות ערך כלשהו בשלב מאוחר יותר יכול לגרור בלבול וטעיות. כאשר מנצלים את רוב הפרמטרים, עדיף ליצור משתנה שהוא מערך, להזין לתוכו את הערכים הרלוונטיים ואז להריץ את הפונקציה עם המשתנה.
כך:
$orderCat = array(
'show_option_all' => '',
'orderby' => 'name',
'order' => 'ASC',
'show_last_update' => 0,
'style' => 'list',
'show_count' => 0,
'hide_empty' => 1,
'use_desc_for_title' => 1,
'child_of' => 0,
'feed' => '',
'feed_image' => '',
'exclude' => '',
'hierarchical' => true,
'title_li' => __('Categories'),
'echo' => 1
);
wp_list_categories($orderCat);
שיטת הכתיבה הזו הינה פשוטה יותר, ולמרות שהיא אולי תופסת הרבה יותר מקום הרי שההבנה שלה פשוטה יותר. יתר על כן, שיטת העבודה הזו נכונה יותר שכן אם יש מספר מקומות בהם אנחנו מציגים רשימת קטגוריות, ניתן לבצע שינוי מיידי וגורף לכל המקומות במקום לעבור על כל הקבצים ולעדכן את הקריאות הספציפיות.
יישום בפועל
כפי שהודגם קודם לכן, ניתן להגדיר לפונקציה לטעון רשימת קטגוריות מפולחות בהתאם למקום בו אנחנו נמצאים. אבל, איך אנחנו יכולים לדעת איפה אנחנו באמת נמצאים?
אחת הפונקציות המועילות לבדיקה שכזו היא – is_category. זוהי פונקציה פונקציה בוליאנית של וורדפרס המחזירה אמת כאשר המשתמש נמצא בעמוד קטגוריה ושקר לגבי כל עמוד אחר.
היות ומדובר בפונקציה בוליאנית, ניתן להציב אותה בתוך שאלת if ולהשתמש בתוצאות הבדיקה על מנת להציג נתונים שונים. כך למשל קטע הקוד הבא יבדוק אם אנחנו בעמוד קטגוריה או לא ויכריז על מיקומנו בהתאם.
if (!is_category())
echo 'This is not a Category page';
else
echo 'This is the ', the_category() , ' Page';
יישום בפועל – דוגמה
בקבוצת וורדפרס עולה לפעמים השאלה לגבי בלוגים דו לשוניים. מה קורה אם אנחנו רוצים לנהל בלוג בעברית ובאנגלית במקביל? (לא פוסטים דו לשוניים, אלא שני בלוגים נפרדים בשתי שפות שונות)
פיתרון אחד הוא להתקין על השרת שתי גירסאות של וורדפרס ולהקים שני מסדי נתונים (או לנסות להתקין על אותו מסד נתונים ולקוות שלא יהיו התנגשויות). גם אם הצלחנו בזה, עדיין זה דורש מאיתנו שתי מערכות אדמין שצריך לנהל, שני מסדי נתונים שיש לגבות וכן הלאה.
האלטרנטיבה, היא לייצר שתי קטגוריות ראשיות – אחת עבור אנגלית ואחת עבור עברית – ותחתיהן לשרשר את הקטגוריות הרלוונטיות לאותו בלוג.
כך למעשה, כל הנושאים של הבלוג באנגלית משוייכים לקטגוריה האנגלית וכל הנושאים של הבלוג העברי משוייכים לקטגוריה העברית. על מנת להציג את הקטגוריות הרלוונטיות נשתמש בפונקציה כך שתציג רק את הקטוגוריות המשוייכות לשפה הרלוונטית בעזרת המשתנה 'child_of'.
המהדרין, יוכלו לייצר קובץ css שונה עבור עברית ואנגלית ובעזרת משפט if פשוט – לבצע בדיקה איפה אנחנו ולקרוא לקובץ ה css הרלוונטי. כך למשל, ניתן לתחזק את אותו העיצוב עבור שתי השפות ורק לשלוט בכיווניות בעזרת css נפרד לכל שפה.
כתיבת תגובה