19
באפריל
2010

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

מאת: מאור ברזני | תגובות: 9 | נושאים: וורדפרס
תגיות: , , , , , |

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

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

כדי לעשות את זה, שתלו את שורות הקוד הבאות בתוך הלופ בקובץ 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 לרשימה ולעצב את התפריט לפי איך שמעוניינים.

שתפו גם אחרים:
  • email
  • Print
  • RSS
  • Facebook
  • Twitter
  • LinkedIn
  • Google Bookmarks
  • Live
  • PDF
  • MySpace
  • del.icio.us
  • Digg
  • Technorati
  • Yahoo! Bookmarks
  • Yahoo! Buzz
  • Add to favorites

9 תגובות »

  • מאת דודו:

    תודה.
    טיפ מעניין מאוד.

  • מאת שושו:

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

    במקום שזה יציג אך ורק את עמודי המשנה כמו בקוד הנוכחי, זה יציג גם את העמוד האב עצמו:

    אודות * צוות המחלקה * החזון שלנו * התוכניות לעתיד.

    תודה רבה
    אחלה בלוג

  • מאת שושו:

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

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

      < ?php
      $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 } ?>

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

        בהצלחה

        siblings.jpg

  • מאת שושו:

    וואלה תודה. אבל הקוד שנתת לא עבד לי נאלצתי לשחק איתו קצת עד שזה הצליח. זה הקוד שעובד אצלי פיקס [אני מקווה שהוא יכנס טוב פה בתגובה]:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
               <?php
    $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‬ My ComLuv Profile

פיד RSS לתגובות בפוסט | טראקבק


הוסף תגובה

Gravity Forms Plugin for WordPress

You can add images to your comment by clicking here.

TechnoCraft - פתרונות אינטרנט


אֶקְסְפֶּרִימֶנְט דוֹט אֶפֶס - וורדפרס, תוכן, טכנולוגיה ועוד כמה דברים - מופעל באמצעות WordPress | פתרונות אינטרנט