Install
Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/poseidonas/notices-drawer/releases/download/v1.0.0/notices-drawer.zipCollects admin notices into one collapsible drawer and names the plugin each notice came from. Error notices and WordPress notices stay in place. No JavaScript.
- Author: George Vasiliades - https://github.com/Poseidonas
- License: GPL-2.0-or-later
- Requires WordPress 6.7+ and PHP 8.0+
What it does
Fifteen plugins with one notice each turn the dashboard into a wall of boxes before any real content starts. WordPress has no registry of notices: every plugin simply echoes markup inside an action, so there is no way to ask what is on the screen or who put it there.
This plugin runs each registered notice callback on its own and captures what it prints. That means it knows exactly which plugin, theme or must-use plugin produced every notice, without ever parsing somebody else's markup. Notices that do not need to be in your way are moved into a single collapsible drawer at the top of the screen:
4 notices from Elementor, Yoast SEO, WP Mail SMTP
Opening it shows the notices exactly as their authors printed them, with the dismiss buttons still working.
Nothing happens until you switch collecting on. A fresh installation changes no screen at all.
No JavaScript
The drawer is a plain HTML details element. There is no script, no dialog, no interception of clicks: it works with the keyboard, it works before the page finishes loading, and it cannot break when another plugin has a JavaScript error. The only styling added is a few lines of spacing appended to the WordPress admin stylesheet, with no colours of its own.
What is never touched
| Item | Why |
|---|---|
| The "Settings saved" message | WordPress prints Settings API feedback from options-head.php, after the notice hooks have already run, so it never passes through this plugin. |
| Notices printed by WordPress | Update reminders, Site Health, PHP notices. They are recognised by the file they come from and stay in place while the corresponding setting is on. |
| Error notices | Anything marked as an error stays in place while the corresponding setting is on. |
| Callbacks registered too late | A notice added after the admin header has started printing is left alone and appears normally. |
| Anything that fails | If a notice callback throws, whatever it printed is kept and the drawer carries on. |
Settings
Settings > Notices.
Collecting
| Setting | Effect | Default |
|---|---|---|
| Collect notices into a drawer | The master switch. While it is off, the plugin changes nothing at all | Off |
Always visible
| Setting | Effect | Default |
|---|---|---|
| Keep error notices in place | Notices marked as errors stay at the top of the screen | On |
| Keep notices from WordPress in place | Update reminders, Site Health and the rest of core | On |
| Sources to keep in place | A checklist that fills up with every plugin, theme or must-use plugin that has printed a notice on this site | none |
Never shown
| Setting | Effect | Default |
|---|---|---|
| Sources to hide completely | Notices from these sources are dropped and do not appear in the drawer either | none |
This is the setting for the plugin that asks for a five star review on every screen. It also hides everything else that source prints, including messages that matter, so it is deliberately separate from the drawer and described as such on the settings page.
Drawer
| Setting | Effect | Default |
|---|---|---|
| Name the source of each notice | Prints the plugin or theme name above each notice inside the drawer | On |
| Open the drawer by default | The drawer starts expanded instead of collapsed | Off |
How the source of a notice is found
When the admin header starts, the plugin takes the callbacks registered on admin_notices, network_admin_notices, user_admin_notices and all_admin_notices, in the same order and the same combination WordPress itself would run them, and removes them. It then runs each one inside its own output buffer and uses reflection to find the file the callback was defined in. That file is matched against the plugins directory, the must-use plugins directory, the themes directory and the WordPress directory, which gives both an identifier and a readable name.
When no file can be determined, for example for a callback created at runtime that does not belong to a file, the notice is labelled Unknown, is collected like any other, and the source is not added to the checklists.
Filters
icxcnika_notices_settings- all settings before they are applied.icxcnika_notices_registry_payload- data sent to the installation registry.
Data stored
- Option
icxcnika_notices_settings(the settings). - Option
icxcnika_notices_sources(the sources that have printed a notice on this site, so the checklists have something to show; not autoloaded, capped at 100 entries). - Option
icxcnika_notices_registry_key(random installation key, created only if installation reporting is active). - Transient
icxcnika_notices_release(cached GitHub release lookup, 12 hours). - Cron event
icxcnika_notices_registry_ping(weekly, only if installation reporting is active).
Installation reporting
On activation, on deactivation and once a week the plugin sends a small JSON message to the author's installation registry: plugin slug, plugin version, home URL, site URL, WordPress version, WooCommerce version if present, PHP version, locale and whether the site is a multisite. Each report carries a random installation key generated locally on first use. No content, no user data and no personal data are sent. The settings page states this explicitly. Add define( 'ICXCNIKA_REGISTRY_DISABLE', true ); to wp-config.php to turn the reporting off, or define( 'ICXCNIKA_REGISTRY_URL', '...' ); to point it elsewhere.
Updates
Updates are delivered from GitHub Releases of this repository. WordPress shows them on the Plugins screen like any other update, together with the details view and the automatic updates link.
Uninstall
Deleting the plugin removes the options, the transient and the cron event. Every notice returns to where it was.
Notices Drawer (Ελληνικά)
Συγκεντρώνει τα notices της διαχείρισης σε ένα πτυσσόμενο συρτάρι και δηλώνει από ποιο πρόσθετο προήλθε το καθένα. Τα notices σφάλματος και τα notices του WordPress παραμένουν στη θέση τους. Χωρίς JavaScript.
- Δημιουργός: George Vasiliades - https://github.com/Poseidonas
- Άδεια: GPL-2.0-or-later
- Απαιτεί WordPress 6.7+ και PHP 8.0+
Τι κάνει
Δεκαπέντε πρόσθετα με ένα notice το καθένα μετατρέπουν τον πίνακα ελέγχου σε τοίχο από πλαίσια πριν ξεκινήσει το πραγματικό περιεχόμενο. Το WordPress δεν διαθέτει μητρώο notices: κάθε πρόσθετο απλώς τυπώνει σήμανση μέσα σε ένα action, οπότε δεν υπάρχει τρόπος να ρωτήσεις τι υπάρχει στην οθόνη ή ποιος το έβαλε.
Αυτό το πρόσθετο εκτελεί ξεχωριστά κάθε καταχωρημένο callback και συλλέγει ό,τι τυπώνει. Έτσι γνωρίζει ακριβώς ποιο πρόσθετο, θέμα ή must-use πρόσθετο παρήγαγε κάθε notice, χωρίς ποτέ να αναλύει τη σήμανση κάποιου άλλου. Τα notices που δεν χρειάζεται να σας εμποδίζουν μεταφέρονται σε ένα πτυσσόμενο συρτάρι στην κορυφή της οθόνης:
4 notices from Elementor, Yoast SEO, WP Mail SMTP
Ανοίγοντάς το βλέπετε τα notices ακριβώς όπως τα τύπωσαν οι δημιουργοί τους, με τα κουμπιά απόρριψης να λειτουργούν κανονικά.
Τίποτα δεν συμβαίνει μέχρι να ενεργοποιήσετε τη συλλογή. Μια νέα εγκατάσταση δεν αλλάζει καμία οθόνη.
Χωρίς JavaScript
Το συρτάρι είναι ένα απλό στοιχείο HTML details. Δεν υπάρχει script, δεν υπάρχει παράθυρο, δεν υποκλέπτονται κλικ: λειτουργεί με το πληκτρολόγιο, λειτουργεί πριν ολοκληρωθεί η φόρτωση της σελίδας, και δεν μπορεί να χαλάσει όταν κάποιο άλλο πρόσθετο έχει σφάλμα JavaScript. Η μόνη προσθήκη μορφοποίησης είναι ελάχιστες γραμμές αποστάσεων στο φύλλο στυλ της διαχείρισης, χωρίς κανένα δικό του χρώμα.
Τι δεν αγγίζεται ποτέ
| Στοιχείο | Γιατί |
|---|---|
| Το μήνυμα «Οι ρυθμίσεις αποθηκεύτηκαν» | Το WordPress τυπώνει την ανατροφοδότηση του Settings API από το options-head.php, αφού έχουν ήδη τρέξει τα notice hooks, οπότε δεν περνά ποτέ από αυτό το πρόσθετο. |
| Notices του WordPress | Υπενθυμίσεις ενημερώσεων, Site Health, μηνύματα PHP. Αναγνωρίζονται από το αρχείο προέλευσης και παραμένουν στη θέση τους όσο η αντίστοιχη ρύθμιση είναι ενεργή. |
| Notices σφάλματος | Ό,τι είναι σημασμένο ως σφάλμα παραμένει στη θέση του όσο η αντίστοιχη ρύθμιση είναι ενεργή. |
| Callbacks που καταχωρούνται πολύ αργά | Ένα notice που προστίθεται αφού έχει αρχίσει να τυπώνεται η κεφαλίδα της διαχείρισης δεν πειράζεται και εμφανίζεται κανονικά. |
| Οτιδήποτε αποτύχει | Αν ένα callback προκαλέσει σφάλμα, ό,τι πρόλαβε να τυπώσει διατηρείται και το συρτάρι συνεχίζει. |
Ρυθμίσεις
Ρυθμίσεις > Notices.
Συλλογή
| Ρύθμιση | Ενέργεια | Προεπιλογή |
|---|---|---|
| Συλλογή notices σε συρτάρι | Ο κύριος διακόπτης. Όσο είναι ανενεργός, το πρόσθετο δεν αλλάζει απολύτως τίποτα | Ανενεργό |
Πάντα ορατά
| Ρύθμιση | Ενέργεια | Προεπιλογή |
|---|---|---|
| Τα notices σφάλματος παραμένουν στη θέση τους | Όσα είναι σημασμένα ως σφάλματα μένουν στην κορυφή της οθόνης | Ενεργό |
| Τα notices του WordPress παραμένουν στη θέση τους | Υπενθυμίσεις ενημερώσεων, Site Health και τα υπόλοιπα του πυρήνα | Ενεργό |
| Πηγές που παραμένουν στη θέση τους | Λίστα που γεμίζει με κάθε πρόσθετο, θέμα ή must-use πρόσθετο που έχει τυπώσει notice σε αυτό το site | καμία |
Ποτέ ορατά
| Ρύθμιση | Ενέργεια | Προεπιλογή |
|---|---|---|
| Πηγές που αποκρύπτονται πλήρως | Τα notices αυτών των πηγών αφαιρούνται και δεν εμφανίζονται ούτε στο συρτάρι | καμία |
Αυτή είναι η ρύθμιση για το πρόσθετο που ζητά αξιολόγηση πέντε αστέρων σε κάθε οθόνη. Αποκρύπτει όμως και ό,τι άλλο τυπώνει η ίδια πηγή, ακόμα και μηνύματα που έχουν σημασία, γι' αυτό είναι σκόπιμα ξεχωριστή από το συρτάρι και περιγράφεται ως τέτοια στη σελίδα ρυθμίσεων.
Συρτάρι
| Ρύθμιση | Ενέργεια | Προεπιλογή |
|---|---|---|
| Αναφορά της πηγής κάθε notice | Τυπώνει το όνομα του πρόσθετου ή του θέματος πάνω από κάθε notice μέσα στο συρτάρι | Ενεργό |
| Το συρτάρι ανοιχτό από προεπιλογή | Το συρτάρι ξεκινά ανοιχτό αντί για κλειστό | Ανενεργό |
Πώς εντοπίζεται η πηγή ενός notice
Όταν ξεκινά η κεφαλίδα της διαχείρισης, το πρόσθετο παίρνει τα callbacks που είναι καταχωρημένα στα admin_notices, network_admin_notices, user_admin_notices και all_admin_notices, με την ίδια σειρά και τον ίδιο συνδυασμό που θα εκτελούσε και το WordPress, και τα αφαιρεί. Στη συνέχεια εκτελεί το καθένα μέσα σε δικό του output buffer και μέσω reflection βρίσκει το αρχείο στο οποίο ορίστηκε το callback. Το αρχείο αντιστοιχίζεται στον κατάλογο πρόσθετων, στον κατάλογο must-use πρόσθετων, στον κατάλογο θεμάτων ή στον κατάλογο του WordPress, και έτσι προκύπτει τόσο ένα αναγνωριστικό όσο και ένα αναγνώσιμο όνομα.
Όταν δεν μπορεί να προσδιοριστεί αρχείο, για παράδειγμα σε callback που δημιουργείται κατά την εκτέλεση και δεν ανήκει σε αρχείο, το notice σημαίνεται ως Άγνωστο, συλλέγεται όπως κάθε άλλο, και η πηγή δεν προστίθεται στις λίστες.
Φίλτρα
icxcnika_notices_settings- όλες οι ρυθμίσεις πριν εφαρμοστούν.icxcnika_notices_registry_payload- τα δεδομένα που στέλνονται στο μητρώο εγκαταστάσεων.
Δεδομένα που αποθηκεύονται
- Option
icxcnika_notices_settings(οι ρυθμίσεις). - Option
icxcnika_notices_sources(οι πηγές που έχουν τυπώσει notice σε αυτό το site, ώστε οι λίστες να έχουν περιεχόμενο· χωρίς autoload, με ανώτατο όριο 100 εγγραφές). - Option
icxcnika_notices_registry_key(τυχαίο κλειδί εγκατάστασης, δημιουργείται μόνο αν είναι ενεργή η αναφορά εγκατάστασης). - Transient
icxcnika_notices_release(cache της αναζήτησης έκδοσης στο GitHub, 12 ώρες). - Cron event
icxcnika_notices_registry_ping(εβδομαδιαίο, μόνο αν είναι ενεργή η αναφορά εγκατάστασης).
Αναφορά εγκατάστασης
Κατά την ενεργοποίηση, την απενεργοποίηση και μία φορά την εβδομάδα το πρόσθετο στέλνει ένα μικρό μήνυμα JSON στο μητρώο εγκαταστάσεων του δημιουργού: slug και έκδοση του πρόσθετου, home URL, site URL, έκδοση WordPress, έκδοση WooCommerce αν υπάρχει, έκδοση PHP, γλώσσα και αν το site είναι multisite. Κάθε αναφορά συνοδεύεται από ένα τυχαίο κλειδί εγκατάστασης που δημιουργείται τοπικά την πρώτη φορά. Δεν αποστέλλεται περιεχόμενο, δεδομένα χρηστών ή προσωπικά δεδομένα. Η σελίδα ρυθμίσεων το δηλώνει ρητά. Προσθέστε define( 'ICXCNIKA_REGISTRY_DISABLE', true ); στο wp-config.php για να απενεργοποιήσετε την αναφορά, ή define( 'ICXCNIKA_REGISTRY_URL', '...' ); για να τη στείλετε αλλού.
Ενημερώσεις
Οι ενημερώσεις έρχονται από τα GitHub Releases αυτού του αποθετηρίου. Το WordPress τις εμφανίζει στη σελίδα Πρόσθετα όπως κάθε άλλη ενημέρωση, μαζί με την προβολή λεπτομερειών και τον σύνδεσμο αυτόματων ενημερώσεων.
Απεγκατάσταση
Η διαγραφή του πρόσθετου αφαιρεί τα options, το transient και το cron event. Κάθε notice επιστρέφει εκεί που ήταν.
Releases
1 release. Each count is every asset in that release; expand a row for the breakdown.