יצירת תפריטים דינמיים בוורדפרס

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

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

מה זה התפריט המותאם הזה?

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

זכרו לגבות קבצים לפני שינויים!

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

תפריטים דינמיים בוורדפרס – שאלות ותשובות

אין לי שום תפריטים לגרור אליהם וידג'טים

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

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

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

האם אני יכול ליצור תפריט שונה לכל דף?

בעיקרון אפשר ליצור תפריט שונה לכל דף אך זה לא מומלץ למעט במקרים בהם אין לכם ברירה. עדיף להסתמך על המבנה של וורדפרס כלומר לסוגי התכנים הקיימים דהיינו לעשות תפריט אחד לעמוד הבית (index.php), תפריט אחד לדפים / עמודים (page.php) ותפריט אחד לפוסטים (single.php)… כמובן שתוכלו להכין גם לסוגי מדיה אחרים כמו לדפי קטגוריה (category.php) ואפילו לדפי תוצאות חיפוש (search.php).

איך עושים תפריט דינמי בוורדפרס

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

דוגמאות לתפריטי צד

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

ראשית ובכדי להבין את הדברים ניצור תפריט דינמי ראשון לדף הבית של התבנית שלנו.

  • איפה? בקובץ functions.php
  • מה? מצהיר על רישום של תפריט דינמי
if ( function_exists('register_sidebar') )
	register_sidebar(array('name'=>'homepage',
));

זאת הצורה הפשוטה ביותר להצהיר על תפריט צדדי. אם תוסיפו קוד זה אל קובץ הfunctions.php שלכם ותכנסו אל ממשק הניהול של וורדפרס אל התפריט – מראה אתר > וידג'טים  –  תראו כי מעתה קיים תפריט אשר נקרא homepage.

תפריט צד עם תכונות מפורטות יותר (אופציונלי)

אם תרצו תוכלו להוסיף הגדרות נוספות לקוד זה… המילה array מצהירה (בשפת PHP) כי מדובר במערך ובמקרה זה מערך של מאפיינים. למעשה בקודקס של וורדפרס העוסק בפקודה register_sidebar מוצג הקוד המורחב אשר מאפשר על שליטה גם בסוג הכותרת שיכיל כל וידג'ט בתפריט שאתם יוצרים.. בואו נראה את הדוגמה המוצגת בקודקס של וורדפרס.

 

register_sidebar(array(
'name' => 'homepage',
'description' => 'Widgets in this area will be shown on the right-hand side.',
'before_title' => '<h1>',
'after_title' => '</h1>'
));

 

אז מה קורה כאן?

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

register_sidebar(array(
	'name' => 'homepage',				// שם התפריט
	'description' => 'Widgets area',	// תיאור התפריט
	'before_title' => '<h1>',			// עם מה לעטוף את הכותרת
	'after_title' => '</h1>'			// תג סוגר לכותרת
));

 

כפי שניתן לראות זה דיי קל להוסיף את התפריט אל הדף functions.php. למרות הרישום בקודקס של וורדפרס אני מעדיף (באופן אישי) שלא להגדיר איזה סוג כותרת תופיע בוידג'ט (כלומר כותרת h1 או h2 או h3). כותרת ברירת מחדל היא H3 והיא נכונה מבחינתי גם מבחינת מבנה תואם קידום אתרים בגוגל וגם מבחינת הגדרות ולכן אני תמיד מעדיף לקצר את פקודת הרישום לקוד הראשון שהצגתי…

הוספתי את הקוד לfunctions.php – מה עכשיו?

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

  • איפה? בקובץ index.php
  • מה? קורא לתפריט שיצרנו קודם לכן
<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('homepage') ) : else : ?><?php endif; ?>

מה קורה כאן?

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

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

1. ניגשים אל הקובץ functions.php ומוסיפים את הקוד

if ( function_exists('register_sidebar') )register_sidebar(array('name'=>'homepage',));

 

2. ניגשים אל המיקום הרצוי בתבנית שלנו ומוסיפים את הקוד

<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('homepage') ) : else : ?><?php endif; ?>

מה אם אני רוצה להכין כמה תפריטים לאתר וורדפרס שלי?

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

בדוגמה זאת נוסיף 3 תפריטים, האחד לדף הבית, השני לעמודים כלומר לקובץ page.php השלישי לפוסטים כלומר לדף single.php והרביעי לדף קטגוריה כלומר לקובץ category.php.. חושבים שזה מסובך? ממש לא! זה קל בדיוק כמו להוסיף תפריט אחד רק דורש מעט יותר קוד. בואו נתחיל..

 

ראשית.. נוסיף את הקוד הבא לקובץ Functions.php

if(function_exists('register_sidebar'))
register_sidebar(array('name'=>'homepage',));
register_sidebar(array('name'=>'pages',));
register_sidebar(array('name'=>'Posts',));
register_sidebar(array('name'=>'category',));

 

שנית… נוסיף בתבנית שלנו את הקוד לפי שם התפריט לדף הבית

<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('homepage') ) : else : ?><?php endif; ?>

 

נוסיף בתבנית שלנו את הקוד לפי שם התפריט לעמודים (לקובץ page.php)

<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('pages') ) : else : ?><?php endif; ?>

 

נוסיף בתבנית שלנו את הקוד לפי שם התפריט לפוסטים (לקובץ single.php)

<?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('posts') ) : else : ?><?php endif; ?>

 

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

מה למדנו?

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