טיפ וורדפרס: הצגה דינמית של עמודי אב ועמודים אחים
שימוש בפונקציה פשוטה ומוכרת על מנת להציג את רשימת עמודי הבנים ועמודי האחים של עמוד סטטי מסוים. ישנם אתרי וורדפרס בהם נעזרים לא מעט במנגנון העמודים ובעובדה שאפשר לייצר היררכיה של עמודי אב-בן.
לעתים, עולה הצורך להציג בעמוד אב מסוים את רשימת כל עמודי הבנים שלו ובנוסף גם בכל עמוד בן להציג את רשימת העמודים האחים שלו, אלה ששייכים לאותו אב.
כדי לעשות את זה, שתלו את שורות הקוד הבאות בתוך הלופ בקובץ page.php, האחראי להצגה של עמוד יחיד.
אם יש לכם קבצי תבנית נוספים של עמודים, לפי היררכיית קבצי התבנית בוורדפרס, אז כמובן שניתן לשתול את הקוד הזה גם שם. חשוב להוסיף, הקוד הזה נועד לעמודים סטטיים ולא לפוסטים או לקטגוריות.
1 2 3 4 5 6 7 8 9 10 | <?php $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0'); $siblings = wp_list_pages('title_li=&child_of='.$post->post_parent.'&echo=0'); if ( $children || $post->post_parent != 0) { ?> <ul> <?php echo $children; if ($post->post_parent != 0) echo $siblings; ?> </ul> <?php } ?> |
הסבר
- המשתנה $children מחזיק את מספרי העמודים שהם הבנים של הפוסט הנוכחי, במידה וישנם.
- המשתנה $siblings מחזיק את מספרי עמודי האחים של הפוסט הנוכחי, במידה וישנם.
- לאחר מכן בודקים אם לעמוד יש עמודים בנים או שהוא בעצמו עמוד בן של הורה כלשהו, אז יוצגו אותם פוסטים בנים.
- בנוסף נבדוק גם אם יש לעמוד אחים והוא – ואם כן נדפיס גם אותם.
הפונקציה הזו מטפלת במקרה של רמה אחת של אב-בן. במקרה שיש לכם גם עמודי-נכד, אז הפנקציה הזו לא מספיקה וצריך לשכתב אותה ע"מ למנוע כפילות של רשימת עמודי הנכד בעמודים שיש להם גם אבא וגם בנים וכן כדי להציג את המידע הרצוי בעמודי הנכד (נכדים נוספים ו/או הורים).
התפריט יהיה עטוף ברשימה לא מקושרת רגילה. ניתן, כמובן, להוסיף קלאסים של CSS לרשימה ולעצב את התפריט לפי איך שמעוניינים.
9 תגובות »
פיד RSS לתגובות בפוסט | טראקבק
תודה.
טיפ מעניין מאוד.
אחלה טיפ. תודה.
מעניין אותי אם יש אפשרות לפקודה שתדפיס גם את עמוד האב, לצורך העניין נאמר שאלו הם העמודים:
עמוד אב: אודות
בן 1: צוות המחלקה
בן 2: החזון שלנו
בן 3: התוכניות לעתיד
במקום שזה יציג אך ורק את עמודי המשנה כמו בקוד הנוכחי, זה יציג גם את העמוד האב עצמו:
אודות * צוות המחלקה * החזון שלנו * התוכניות לעתיד.
תודה רבה
אחלה בלוג
אפשר למשל להוסיף שבמקרה שיש אחים אז להדפיס גם את עמוד האבא, זו לא צריכה להיות בעיה.
ותודה על הפידבקים, שמח שהבלוג מועיל לך
אני לא מתכנת אבל יש לי קצת ידע בוורדפרס, ניסיתי נואשות כל מיני דרכים כדי להדפיס גם את עמוד האב ביחד עם הבנים, אבל ללא הצלחה.
אם יש לך איזה כיוון מה אני צריך להכניס לקוד, אני מאוד אודה לך.
תודה
הקוד הזה יציג ברשימה גם את עמוד האב, אצל עמודי הבנים. אפשר להוסיף עוד התניה שיציג בעמוד האב גם קישור לכותרת שלו עצמו.
$children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0&sort_order=DESC');
$siblings = wp_list_pages('title_li=&child_of='.$post->post_parent.'&echo=0&sort_order=DESC');
if ($post->post_parent != 0) { ?>
עוד post_parent); ?>" rel="bookmark">< ?php echo get_the_title($post->post_parent);?>:
< ?php }
if ( $children || $post->post_parent != 0) { ?>
< ?php echo $children;
if ($post->post_parent != 0) echo $siblings; ?>
< ?php } ?>
טוב , הקוד פה בתגובות קצת מתחרבש.
אני מנסה לשים פה צילום אימאג' של הקוד. תלחץ על התמונה כפתור ימני ושמור בשם או צפיה בתמונה, כדי לראות את כולה. פה בתגובה הוא מראה רק קוביה קטנה מתוכה.
בהצלחה
וואלה תודה. אבל הקוד שנתת לא עבד לי נאלצתי לשחק איתו קצת עד שזה הצליח. זה הקוד שעובד אצלי פיקס [אני מקווה שהוא יכנס טוב פה בתגובה]:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0&sort_order=DESC');
$siblings = wp_list_pages('title_li=&child_of='.$post->post_parent.'&echo=0&sort_order=DESC');
if ($post->post_parent != 0) { ?>
<?php }
if ( $children || $post->post_parent != 0) { ?>
<ul>
<li><a href="<?php echo get_permalink($post->post_parent) ?>" rel="bookmark" title="<?php echo get_the_title($post->post_parent); ?>"><?php echo get_the_title($post->post_parent); ?></a></li>
<?php echo $children;
if ($post->post_parent != 0) echo $siblings; ?>
</ul>
<?php } ?>
הקוד שכתבתי בתגובה הוא צילום מתוך קוד שעובד באתר שבניתי.
בכל מקרה, העיקר שהצלחת להתאים את הקוד שלי לצרכים שלך ושזה עובד לך טוב.
וואו כתבה בהחלט מקצועית ויעילה.
תודה.
פורסם לאחרונה אצל ליאון אטקינסון.. תבנית וורדפרס חדשה – Midnight Mass