הוספת הודעות מותאמות בממשק הניהול של וורדפרס

כדי להוסיף הודעה בממשק הניהול של וורדפרס, חברו פונקציה להוק admin_notices והדפיסו div עם ה-class בשם notice. זה אותו מנגנון שהליבה והתוספים משתמשים בו להצגת הודעות הצלחה, אזהרות ושגיאות בראש המסכים ב-wp-admin.

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

הוספת הודעה מותאמת בממשק הניהול

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

add_action( 'admin_notices', function () {
    $screen = get_current_screen();

    if ( ! $screen || 'edit-post' !== $screen->id ) {
        return;
    }

    echo '<div class="notice notice-warning is-dismissible">';
    echo '<p>' . esc_html__( 'Remember to set a featured image before publishing.', 'your-textdomain' ) . '</p>';
    echo '</div>';
} );

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

איך זה עובד

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

ה-classes קובעים את מראה ההודעה:

  • notice נדרש בכל הודעה.
  • notice-success (ירוק), notice-error (אדום), notice-warning (צהוב) או notice-info (כחול) קובעים את צבע ה-border שבצד ההודעה.
  • is-dismissible מוסיף כפתור סגירה.

get_current_screen() מחזירה את אובייקט המסך הנוכחי. מזהים שימושיים הם dashboard, edit-post (רשימת הפוסטים), post (עורך הפוסטים), upload, plugins ו-options-general.

הפונקציה wp_admin_notice() (וורדפרס 6.4 ומעלה)

החל מוורדפרס 6.4, הפונקציה wp_admin_notice() בונה עבורכם את ה-markup. הנה אותה הודעה מהדוגמה הקודמת, בלי לכתוב HTML ידנית:

add_action( 'admin_notices', function () {
    $screen = get_current_screen();

    if ( ! $screen || 'edit-post' !== $screen->id ) {
        return;
    }

    wp_admin_notice(
        esc_html__( 'Remember to set a featured image before publishing.', 'your-textdomain' ),
        array(
            'type'        => 'warning',
            'dismissible' => true,
        )
    );
} );

הארגומנט type מקבל את הערכים success, error, warning או info ומוסיף את ה-class המתאים עם הקידומת notice-. הארגומנטים הנוספים הם id, additional_classes, attributes ו-paragraph_wrap, שערכו true כברירת מחדל. הפלט עובר דרך wp_kses_post(), כך שקישורים ותגיות <strong> נשמרים, אך סקריפטים לא.

אם התוסף שלכם עדיין תומך בגרסאות מוקדמות מ-6.4, עטפו את הקריאה ב-function_exists( 'wp_admin_notice' ) או השאירו את ה-markup הידני.

למה ההודעה לא מופיעה בעורך הבלוקים

כשעורך הבלוקים פעיל, הוא מסתיר את אזור ההודעות הקלאסי, כך שכל מה שמודפס ב-admin_notices לא מופיע בזמן עריכת פוסט. במקום זאת, השתמשו ב-store של ההודעות ב-JavaScript של העורך:

wp.data.dispatch( 'core/notices' ).createNotice(
    'warning',
    'Remember to set a featured image before publishing.',
    { isDismissible: true }
);

טענו את הסקריפט רק במסכי העורך, כפי שמוסבר בטעינת סקריפטים רק בעמודי ניהול ספציפיים, עם wp-data ו-wp-notices כתלויות. למידע נוסף על actions ופילטרים, ראו את הפוסט הוקים בוורדפרס.

שאלות נפוצות

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

למה ההודעה שסגרתי חוזרת אחרי רענון העמוד?
is-dismissible רק מסיר את ההודעה מהעמוד באמצעות JavaScript. בכדי שתישאר מוסתרת, שמרו את הסגירה בעצמכם (למשל ב-user meta דרך בקשת AJAX) ובדקו את הערך הזה לפני שאתם מדפיסים את ההודעה.
כיצד מציגים הודעת הצלחה אחרי שמירת טופס מותאם?
בצעו הפניה חזרה עם פרמטר בכתובת כמו &saved=1, בדקו אותו בתוך ה-callback של admin_notices והדפיסו notice-success. טפסים של ה-Settings API שנשלחים אל options.php מקבלים הודעת "Settings saved." באופן אוטומטי.
למה ההודעות של add_settings_error() לא מופיעות?
וורדפרס קוראת ל-settings_errors() באופן אוטומטי רק בעמודים שתחת התפריט ״הגדרות״. בעמוד ברמה העליונה (top-level) או בכל עמוד ניהול מותאם אחר, קראו ל-settings_errors() בעצמכם בתחילת הפלט של העמוד.
כיצד מציגים הודעה ב-Network Admin באתר Multisite?
מסכי ה-Network Admin מפעילים את network_admin_notices במקום admin_notices. השתמשו ב-all_admin_notices אם ההודעה צריכה להופיע בשניהם.
דיון ותגובות
[  0 תגובות  ]

השאירו תגובה

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