דף הבית » טריקים וטיפים, מומלצים

להציג תפריטים שונים למשתמשים רשומים ולמשתמשים לא רשומים

24 באפריל 2011 | מאת רמי | 14 תגובות | תגיות: , , , , ,

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

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

להוסיף תמיכה בתפריטים

כדי להוסיף תמיכה בתפריטי ניווט לערכת העיצוב שלכם יש לגשת לקובץ function.php ולהוסיף את הקוד הבא:

function custom_menus() {
    register_nav_menus(
        array(
            'logged-in-menu' => 'תפריט ניווט למשתמשים רשומים',
            'logged-our-menu' => 'תפריט ניווט למשתמשים לא רשומים'
        )
    );
}
add_action( 'init', 'custom_menus' );

הקוד מוסיף שני "אזורים" בהם יוצגו תפריטי ניווט. באזור הראשון ("logged-in-menu") יוצג תפריט ניווט למשתמשים רשומים ובאזור השני ("logged-our-menu") יוצג תפריט ניווט למשתמשים הלא רשומים. הקוד הזה יוצר שני "אזורים" חדשים אותם נראה בלוח הבקרה של וורדפרס:

הוספת תמיכה בתפריטי ניווט - שני תפריטים, למשתמשים רשומים ולמשתמשים לא רשומים

הוספת תמיכה בתפריטי ניווט - שני תפריטים, למשתמשים רשומים ולמשתמשים לא רשומים

ליצור תפריטים ולשייך אותם

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

יצירת שני תפריטים - באחד לינקים שיוצגו למשתמשים רשומים ובשני לינקים למשתמשים לא רשומים

יצירת שני תפריטים - באחד לינקים שיוצגו למשתמשים רשומים ובשני לינקים למשתמשים לא רשומים

עכשיו נשייך את התפריטים שיצרנו לאזורים שלהם. נשייך את תפריט 1 למשתמשים הרשומים ("logged-in-menu") ותפריט 2 למשתמשים הלא רשומים ("logged-our-menu"):

שיוך התפריטים למיקום שלהם

שיוך התפריטים למיקום שלהם

להציג תפריטים בערכת העיצוב

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

<?php
if ( is_user_logged_in() ) {
    wp_nav_menu( array( 'theme_location' => 'logged-in-menu' ) );
} else {
    wp_nav_menu( array( 'theme_location' => 'logged-out-menu' ) );
}
?>

סיכום

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

מאת רמי

אחראי על אתר וורדפרס בעברית ועל תרגום ושחרור גרסאות וורדפרס בעברית. מפתח ליבה, בכל גרסה החל מגרסה 2.8, מפתח מוביל בגרסה 4.4 ובגרסה 4.6. מספק שירותי פיתוח אתרים, פיתוח תוספי וורדפרס לסטרטאפים ופיתוח כלים למפתחי וורדפרס - GenerateWP.com.

14 תגובות »

  • אורי כותב :

    בדיוק מה שחיפשתי- -תודה רבה!

  • שניאור כותב :

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

  • רמי כותב :

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

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

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

  • מנשה כותב :

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

  • רמי כותב :

    היי מנשה, זה פשוט מאוד, עשה שימוש בפונקציה current_user_can() באופן הבא:

    <?php
    if ( is_user_logged_in() ) {
        if ( current_user_can('administrator') ) {
            wp_nav_menu( array( 'theme_location' =>
                    'logged-in-menu-admin' ) );
        } else {
            wp_nav_menu( array( 'theme_location' =>
                    'logged-in-menu' ) );
        }
    } else {
        wp_nav_menu( array( 'theme_location' => 'logged-out-menu' ) );
    }
    ?>

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

  • חולי כותב :

    אהלן רמי וכולם,

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

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

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

    או פתרון יצירתי אחר לבעיה?

    תודה…

  • נתנאל כותב :

    שלום רב
    הוספתי את הקוד הבא לfunctions ואתר שלי פשוט קרס. מציג לי דף לבן שכתוב בו
    Parse error: syntax error, unexpected T_STRING in /home/knati22/public_html/wp-content/themes/pegasus/functions.php on line 15
    מה אפשר לעשות כדי לתקן?

  • רמי כותב :

    נתנאל,
    התחבר לאתר דרך ה-FTP, גש לקובץ function.php והסר את הקוד.

  • תומר כותב :

    שלום,

    איפה יושב קובץ ה header.php?
    האם מדובר על תוספת ברמת תצוגה בלבד ברמת תבנית האתר?

    תודה רבה
    תומר

  • אלי שלו כותב :

    הי רמי דרוש תיקון קטן בקוד

    סגירה בקוד הראשון
    custom_menus' – custom_menus'

  • רמי כותב :

    תודה אלי, הקוד תוקן.

  • גיא שטרית כותב :

    רמי שלום, אני השתמשתי בקוד הזה, החלפתי את הקוד הבא :

    <?php get_sidebar(); ?>

    <?php
        $nav_menu_params=array(
            'depth'=>0,
            'theme_location'=>'main-menu',
            'menu_class'=>'menus menu-primary',
            'fallback_cb'=>'block_main_menu'
        );
        wp_nav_menu($nav_menu_params);
    ?>

    החלפתי את הקוד הזה בקוד הבא:

    <?php
    if ( is_user_logged_in() ) {
        wp_nav_menu( array( 'theme_location' => 'logged-in-menu' ) );
    } else {
        wp_nav_menu( array( 'theme_location' => 'logged-out-menu' ) );
    }
    ?>

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

  • גיא שטרית כותב :

    בנוגע להודעה אחרונה, הסתדרתי.
    תיקון קטן בקוד :

    function custom_menus() {
        register_nav_menus(
            array(
                'logged-in-menu' => 'תפריט ניווט למשתמשים רשומים',
                'logged-out-menu' => 'תפריט ניווט למשתמשים לא רשומים'
            )
        );
    }
    add_action( 'init', 'custom_menus' );

    שינים במקום logged our ל logget out

  • יסוי כותב :

    תוכל לעזור לי אני מנסה למקם את הקובץ

    function custom_menus() {
        register_nav_menus(
            array(
                'logged-in-menu' => 'תפריט ניווט למשתמשים רשומים',
                'logged-our-menu' => 'תפריט ניווט למשתמשים לא רשומים'
            )
        );
    }
    add_action( 'init', 'custom_menus' );

    אבל מקבל שגיאה יש מצב שתגיד לי בדיוק איפה למקם בתחילת שורה בסוף שורה
    תודה

הוסף תגובה !

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

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>