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

לכתוב וידג'ט ללוח הבקרה

29 בדצמבר 2009 | מאת רמי | 10 תגובות | תגיות: , , , ,

אחד השיכלולים שהתווספו לוורדפרס 2.7 הוא וידג'טים עבור לוח הבקרה – אותו עמוד ראשי במערכת הניהול (/wp-admin). בלוח הבקרה ישנם מספר וידג'טים בסיסיים אותם ניתן לסדר מחדש על ידי גרירה, או להסירם דרך תפריט "אפשרויות עמוד" בראש הדף.

כלים למפתחים

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

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

פיתוח וידג'ט בסיסי ללוח הבקרה

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

function my_custom_dashboard_text() {
    echo '<p>ברוכים הבאים ל <a href="http://www.mysite.co.il/">אתר</a> שלי.</p>';
}

function my_custom_dashboard_widgets() {
    wp_add_dashboard_widget('custom_text_widget', 'ברוכים הבאים', 'my_custom_dashboard_text');
}

add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets');

תוצאה

וידג'ט ללוח הבקרה

וידג'ט ללוח הבקרה

וידג'ט ללוח הבקרה ותפריט אפשרויות העמוד

וידג'ט ללוח הבקרה ותפריט אפשרויות העמוד

שימושים מתקדמים

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

function my_custom_dashboard_text() {
    $name = get_option('blogname');
    $url = get_option('siteurl');
    $theme = get_option('current_theme');
    echo '<p>אתר <a href="'.$url.'">'.$name.'</a> משתמש בערכת העיצוב '.$theme.'.</p>';
}

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

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

מאת רמי

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

10 תגובות »

  • ניר כותב :

    איך פותרים את בעיות העברית?
    הטקסט העברי מופיע כצורות כשאני מוסיף את הקוד..

    ועוד משהו – לאן להוסיף את הקוד?
    אני הנחתי שהוא צריך להיות בwp-admin/include/Dashboard.php

  • רמי כותב :

    ניר,

    בעיות עברית ניתן לפתור על ידי שינוי של הקובץ ל-UTF8_without_BOM (מומלץ להשתמש בתוכנת Notepad++).

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

  • עומרי כותב :

    כל הכבוד,
    יופי של פוסט.

    2 שאלות:
    1. איך אני מוריד ויג'טים, גם מלוח הבקרה וגם מאפשרויות התצוגה?
    2. איך אני מוריד מהתפריט הימני חלק מהאפשרויות (תלוי משתמש או תפקיד משתמש)?

  • רמי כותב :

    היי עומרי,

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

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

    remove_action('wp_dashboard_setup', 'my_custom_dashboard_widgets');

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

  • עומרי כותב :

    הי רמי,
    מסתבר שזה לא כזה נורא:
    הנה דוגמא:

    function remove_dashboard_widgets(){
        global$wp_meta_boxes;
        unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
    }

    add_action('wp_dashboard_setup', 'remove_dashboard_widgets');

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

  • נתנאל כותב :

    לא הבנתי, התקנתי וורדפרס 3.0 מרובה אתרים – כמו mu

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

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

    לחלוטין – לא רק ב"אפשרויות תצוגה".

    תודה

  • רמי כותב :

    נתנאל,
    הקוד הבא מסיר הכל, תשאיר מה שאתה צריך ותמחק את השאר.

    function remove_dashboard_widgets(){
        global $wp_meta_boxes;
        unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
        unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);
        unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
        unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
        unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
        unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
        unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
        unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);
    }
    add_action('wp_dashboard_setup', 'remove_dashboard_widgets');
  • רמי כותב :

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

    ראה מידע נוסף ב – http://core.trac.wordpress.org/ticket/14696

    וגם השינוי בלוח הבקרה באתר מרובה משתמשים ב – http://core.trac.wordpress.org/ticket/14435 יש גם תמונות.

  • מימון חיים כותב :

    רמי שלום
    אני מחפש תוסף ליאפשר העברת פקודת הדפסה למדפסת – יש דבר כזה? היכן?

  • רמי כותב :

    זה לא תוסף וורדפרס. אפשר להשתמש בפקודות JS. זה לא קשור לוורדפרס. חפש באינטרנט.

הוסף תגובה !

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

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