איך להציג הודעות סטטיות/מחיקות בממשק הניהול של וורדפרס

איך להציג הודעות סטטיות/מחיקות בממשק הניהול של וורדפרס

  • פרסומת

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

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

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

לשם כך פיתחתי את wp-admin-notification – סקריפט פשוט המאפשר להוסיף הודעות סטטיות/מחיקות על ידי כתיבת שורת קוד בודדת. הסקריפט מציע גם אפשרויות נוספות לשליטה על דרך הפעולה של ההודעה.

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

הוספת הודעה סטטית

הוספת הודעה סטטית מתבצעת על ידי קריאה לפונקציה wp_admin_notification() . לכל הפחות, פונקציה זו מקבלת 3 פרמטרים – $handle , $content ו $type .הפרמטר $handle משמש כדי לזהות את ההודעות (אנחנו עוד נדבר זה בהקשר של הודעות מחיקות). $content מייצג את התוכן של ההודעה (טקסט או HTML). והפרמטר- $type מתייחס לסוג של ההודעה (ניתן לבחור מבין האפשרויות success , error , info או warning ).

הדוגמא הבאה תדפיס הודעת שגיאה סטטית:

<?php
wp_admin_notification( 
    'my-error-notice', 
    __('Oh snap! This is an <strong>error</strong> message.','slug'), 
    'error' 
);
?>

הוספת הודאת שגיאה סטטית לממשק הניהול של וורדפרס

הוספת הודעה מחיקה

הפרמטר הרביעי מאפשר להפוך את ההודעה להודעה מחיקה (כזו שהמשתמש יכול להסתיר). wp-admin-notification דואג שההודעה שנמחקה/הוסתרה לא תופיע שוב. כאשר המשתמש לוחץ על כפתור הסגירה של ההודעה, מתבצעת בקשת AJAX הנעשית באופן אסינכרוני, והיא מאכסנת את ה-ID של ההודעה במסד הנתונים בשביל שהודעה זו לא תופיע שוב.

הדוגמה הבאה תדפיס הודעת אזהרה מחיקה:

<?php
wp_admin_notification( 
    'my-warning-notice', 
    __('Listen carefully, this is an <strong>warning</strong> message.','slug'), 
    'warning', 
    true 
);
?>

הוספת הודאת אזהרה מחיקה לממשק הניהול של וורדפרס

אבל מה ניתן לעשות אם נרצה להראות מחדש הודעה שנסגרה? לדוגמה, כאשר המשתמש מסיר תוסף ומתקין אותו מחדש, יש טעם להציג את ההודעה מחדש. לשם כך, ניתן להשתמש בפונקצית wp_reset_admin_notification( $handle ) , אשר מאפסת את ההודעה עם ה-ID הנתון. הפונקציה תסיר את ה-ID של ההודעה ממסד הנתונים אם המשתמש בעבר הסתיר את ההודעה הנ״ל.

לדוגמא, הקוד הבא יאפס את ההודעה 'my-warning-notice' :

<?php
wp_reset_admin_notification( 'my-warning-notice' );
?>

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

הוספת הודעות בסביבת multisite

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

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

<?php
wp_admin_notification( 
    'my-error-notice', 
    __('Oh snap! This is an <strong>error</strong> message.','slug'), 
    'error',
    false,
    '', // An additional CSS class
    true // Make this notification network-wide
);
?>

התאמה אישית של מראה ההודעה

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

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

<?php
wp_admin_notification( 
    'my-error-notice', 
    __('Oh snap! This is an <strong>error</strong> message.','slug'), 
    'error',
    false,
    'my-notice', // An additional CSS class
);
?>

אפשר להשתמש ב- CSS הבא:

.my-notice {
    background-color: red;
}
/* Or use the id to increase CSS specificity */
#my-error-notice {
    background-color: red;
}

מהירות וביצועים

wp-admin-notification מריץ את עצמו רק אם נרשמה קריאה אחת או יותר לפונקציה. לכן, ההשפעה על הביצועים היא זניחה. בנוסף, על ידי שימוש נכון בפונקציה wp_reset_admin_notification( $handle ) מסד הנתונים יישאר נקי מכל עקבות.

סיכום

בעזרת wp-admin-notification הוספת הודעות לממשק הניהול הופכת להיות פעולה פשוטה. אם מצאתם את המאמר שימושי, אנא עזרו לפרוייקט ב- GitHub. אם יש לכם שאלות או הצעות, שתפו אותם איתי בתגובות ואשמח לעזור!