Schneller Tipp Holen Sie sich die Hooks des aktuellen Bildschirms

Wo immer möglich, ist es besser, screenspezifische Hooks als generische zu verwenden drin, admin_init, admin_footer usw. (es sei denn, Sie möchten ausdrücklich, dass Ihr Rückruf auf jedem Bildschirm ausgeführt wird). In diesem kurzen Tipp erfahren Sie, wie Sie auf einfache Weise die Bildschirmhaken für eine bestimmte Seite erhalten.


Page Bestimmte Haken

Seitenspezifische Hooks bieten die effizienteste (und sauberste) Möglichkeit, einen Rückruf nur für die Bildschirme zu richten, für die Sie ihn benötigen. Sie beinhalten:

  • Lade- Seitenhaken - vor dem Laden des Bildschirms aufgerufen (die Logik dafür finden Sie hier)
  • admin_print_styles- Seitenhaken - Aktion zum Drucken von Stilen in der der Admin-Seite
  • admin_print_scripts- Seitenhaken - Aktion zum Drucken von Skripten im der Admin-Seite
  • admin_head- page-hook - Aktion ausgelöst im der Admin-Seite
  • admin_footer- Seitenhaken - Aktion unmittelbar über dem Abschluss ausgelöst Tag auf der Admin-Seite

Aber was ist der Wert von Seitenhaken für eine bestimmte Seite? Mit Blick auf die Belastung-* Im besonderen werden Sie feststellen, dass es eine ziemlich komplizierte Logik bei der Bestimmung der Seitenhaken. Insbesondere werden benutzerdefinierte Plug-In-Seiten anders behandelt als 'Kernseiten' (z. B. Posttyp- und Taxonomieseiten). Um Abwärtskompatibilität zu gewährleisten, werden bei der Bearbeitung von Posts, Seiten oder Kategorien mehrere Hooks für denselben Bildschirm verwendet.

Die allgemeinen Regeln für den Wert von Seitenhaken kann wie folgt zusammengefasst werden:

  • Für benutzerdefinierte Admin-Seiten, die über hinzugefügt werden add_menu_page () (und verwandte Funktionen) ist es das Bildschirm-ID (der Wert wird von zurückgegeben add_menu_page ())
  • Für die Admin-Seite, die Beiträge eines beliebigen Beitragstyps aufführt, ist es dies edit.php
  • Auf der Seite "Neu hinzufügen" eines beliebigen Posttyps ist es post-new.php
  • Auf der Bearbeitungsseite eines beliebigen Posttyps ist es post.php
  • Für Taxonomieseiten gilt das edit-tags.php

Der Seiten-Hook wird jedoch generiert, er wird jedoch letztlich im globalen Bereich gespeichert $ hook_suffix.


Holen Sie sich leicht die Haken eines Bildschirms

Im Allgemeinen reichen diese Regeln aus, um die seitenspezifischen Haken zu bestimmen. Aber wenn ich mit ihnen arbeite, finde ich es oft hilfreich, eine einfache Referenz zu haben. Um diese einfache Referenz zu erstellen, fügen Sie der Registerkarte "Hilfe" oben rechts auf jedem Bildschirm ein Feld hinzu, in dem die Details des Bildschirms (Bildschirm-ID, Bildschirmbasis und am besten den Bildschirm) aufgeführt werden Hakensuffix). Es werden auch die spezifischen Haken des Bildschirms aufgelistet.

Die Bildschirme auf der Registerkarte "Hilfe" wurden in 3.3 eingeführt. Dies funktioniert also nur für WordPress-Versionen 3.3 und höher. Um das Panel hinzuzufügen, verwenden wir die contextual_help Filter. Dies ist ein Filter für die Rückwärtskompatibilität. Wir filtern also nichts. Stattdessen verwenden wir die WP_Screen :: add_help_tab Methode.

 / * Kontexthilfe hinzufügen * / add_filter ('contextual_help', 'wptuts_screen_help', 10, 3); Funktion wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // Die Funktion add_help_tab für screen wurde in WordPress 3.3 eingeführt. if (! method_exists ($ screen, 'add_help_tab')) gibt $ contextual_help zurück; / *… Hilfeinhalt generieren… * / $ help_content = "; $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Screen Information', 'content' => $ help_content,)); Rückgabe von $ contextual_help;

Um den Hilfeinhalt zu generieren, nehmen wir die globale $ hook_suffix und hängen Sie es an die oben genannten Hakenstiele an. Wir erhalten auch eine Liste der Bildschirmdetails, die als Eigenschaften des Fensters gespeichert werden WP_Screen Objekt.

 global $ hook_suffix; // Bildschirm-Eigenschaften auflisten $ variables = '
    Bildschirmvariablen '. Sprintf ('
  • Bildschirm-ID:% s
  • ', $ screen_id). Sprintf ('
  • Bildschirmbasis:% s
  • ', $ screen-> base). Sprintf ('
  • Übergeordnete Basis:% s
  • ', $ screen-> parent_base). Sprintf ('
  • Übergeordnete Datei:% s
  • ', $ screen-> parent_file). Sprintf ('
  • Hakensuffix:% s
  • ', $ hook_suffix). '
'; // Globale $ hook_suffix an die Hook-Vorbauten anhängen $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- hook_suffix") ; // Wenn add_meta_boxes oder add_meta_boxes_ screen_id verwendet wird, listen Sie diese auch auf, wenn (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Get List HTML für die Hooks $ hooks = '
    Haken
  • '. implodieren ('
  • ', $ hooks). '
'; // Kombination der $ -Variablenliste mit der $ -Hooks-Liste. $ help_content = $ variables. $ Haken;

Das gibt uns so etwas wie das Folgende:


Der Code in vollem Umfang

Sie können Folgendes in das Hilfsprogramm-Plugin Ihrer Site oder (falls erforderlich) Ihres Themes einfügen Functions.php. Stellen Sie sicher, dass Sie umbenennen wptuts_screen_help zu etwas, das für Sie einzigartig ist.

 add_action ('contextual_help', 'wptuts_screen_help', 10, 3); Funktion wptuts_screen_help ($ contextual_help, $ screen_id, $ screen) // Die Funktion add_help_tab für screen wurde in WordPress 3.3 eingeführt. if (! method_exists ($ screen, 'add_help_tab')) gibt $ contextual_help zurück; global $ hook_suffix; // Bildschirm-Eigenschaften auflisten $ variables = '
    Bildschirmvariablen '. Sprintf ('
  • Bildschirm-ID:% s
  • ', $ screen_id). Sprintf ('
  • Bildschirmbasis:% s
  • ', $ screen-> base). Sprintf ('
  • Übergeordnete Basis:% s
  • ', $ screen-> parent_base). Sprintf ('
  • Übergeordnete Datei:% s
  • ', $ screen-> parent_file). Sprintf ('
  • Hakensuffix:% s
  • ', $ hook_suffix). '
'; // Globale $ hook_suffix an die Hook-Vorbauten anhängen $ hooks = array ("load- $ hook_suffix", "admin_print_styles- $ hook_suffix", "admin_print_scripts- $ hook_suffix", "admin_head- $ hook_suffix", "admin_footer- hook_suffix") ; // Wenn add_meta_boxes oder add_meta_boxes_ screen_id verwendet wird, listen Sie diese auch auf, wenn (did_action ('add_meta_boxes_'. $ Screen_id)) $ hooks [] = 'add_meta_boxes_'. $ screen_id; if (did_action ('add_meta_boxes')) $ hooks [] = 'add_meta_boxes'; // Get List HTML für die Hooks $ hooks = '
    Haken
  • '. implodieren ('
  • ', $ hooks). '
'; // Kombination der $ -Variablenliste mit der $ -Hooks-Liste. $ help_content = $ variables. $ Haken; // Hilfefenster hinzufügen $ screen-> add_help_tab (array ('id' => 'wptuts-screen-help', 'title' => 'Screen Information', 'content' => $ help_content,)); return $ contextual_help;