Ich habe zwei einfache Funktionen, die Sachen mit wp_enqueue_style()
und laden wp_enqueue_script()
:
function admin_custom_css()
{ wp_enqueue_style( 'stylesheet_name', 'stylesheet.css') };
function admin_custom_js
{ wp_enqueue_script( 'javascript_file', 'script.js') };
... und ein paar Admin-Seiten, erstellt mit add_menu_page()
undadd_submenu_page()
function my_menu() {
add_menu_page('Page 1', 'bar', 'something', 'else', 'foo');
add_submenu_page( 'theme_menu', 'Subpage 1', 'Subpage', 'something', 'else', 'foo');
}
add_action('admin_menu', 'my_menu');
Wie lade ich meine beiden Funktionen nur auf diesen Seiten?
Im Moment benutze ich:
add_action('admin_init', 'admin_custom_css' );
add_action('admin_init', 'admin_custom_js' );
Aber es lädt meine Dateien auf jeder Admin-Seite, was überhaupt nicht schön ist.
Kann ich dies über eine einfache Zeile in tun functions.php
oder muss ich sie separat in meine Seiten einreihen (ich bevorzuge die erste Option, da ich viele Funktionen zum Erstellen von Administrationsseiten bearbeiten müsste).
Vielen Dank!
wp-admin
wp-enqueue-script
admin-menu
wp-enqueue-style
admin-init
Wordpressor
quelle
quelle
Antworten:
add_menu_page
undadd_submenu_page
beide geben das "Hook-Suffix" der Seite zurück, mit dem die Seite mit bestimmten Hooks identifiziert werden kann. Als solches können Sie dieses Suffix in Kombination mit den variablen Hooks verwendenadmin_print_styles-{$hook_suffix}
undadmin_print_scripts-{$hook_suffix}
diese Seiten gezielt ansprechen.Ich halte dies für eine saubere Methode, um all dies hinzuzufügen, da alles in einer Funktion behandelt wird. Wenn Sie diese Funktion entfernen möchten, entfernen Sie einfach den Aufruf der einen Funktion.
quelle
admin_print_scripts()
Staaten "admin_print_scripts
sollte nicht zum Einreihen von Stilen oder Skripten verwendet werden ." Die Antwort von @TomAuger ist tatsächlich die richtige, wenn auch nicht optimale. Es wäre jedoch von Vorteil, wenn das WP-Team einenadmin_enqueue_scripts-(hookname)
Hook hinzufügen würde ...Das Problem mit der Antwort von @tollmanz ist, dass Sie, da Sie die Hooks -print-styles und -print-scripts deaktivieren, den HTML-Code generieren müssen, um Ihre Skripte manuell zu laden. Dies ist nicht optimal, da Sie nicht die nette Abhängigkeit und Versionierung erhalten, die mit
wp_enqueue_script()
und geliefert wirdwp_enqueue_style()
. Es lässt Sie auch nicht Dinge in die Fußzeile setzen, wenn dies ein besserer Ort für sie ist.Zurück zur Frage des OP: Wie kann ich am besten sicherstellen, dass ich JS / CSS nur auf bestimmten Admin-Seiten in die Warteschlange einreihen kann?
Haken Sie die Aktion "load - {$ my_admin_page}" ab, um nur dann Dinge zu tun, wenn die Admin-Seite Ihres Plugins geladen ist, und dann
Haken Sie die Aktion "admin_enqueue_scripts" ab, um Ihre
wp_enqueue_script
Anrufe ordnungsgemäß hinzuzufügen .Scheint ein bisschen schmerzhaft zu sein, aber es ist tatsächlich sehr einfach zu implementieren. Von oben:
quelle
load-$hook
Hook, der meineoption_page_actions
Funktion auslöst, nur eine Aktion hinzu, zu der ich möglicherweise viele andere Hooks / Filter usw. hinzufüge. Da diese Aktionen nur auf der Seite der Wahl aufgerufen werden, müssen Hooks, die über diesen Punkt hinausgehen, keine mit Namespaces versehenen Hooks verwenden (wie Sie gezeigt haben), was viel effizienter und intuitiver ist.Wenn Sie verwenden
get_current_screen()
, können Sie erkennen, auf welcher Seite Sie sich befinden. Es gibt ein Beispiel in dem Kodex Artikel, den ich verbunden , die zeigt , wie die Verwendungget_current_screen()
mitadd_options_page()
dieser Methode für jede Admin - Seite arbeiten.quelle
Sie können die Antwort übernehmen und leicht erweitern, wobei auch die bedingte Verwendung berücksichtigt wird ...
@tollmanz
Beispiel:
quelle
Wie @ mor7ifer oben erwähnt, können Sie die native WordPress-Funktion get_current_screen () verwenden . Wenn Sie die Ausgabe dieser Funktion durchlaufen, zB:
... Sie werden einen Schlüssel namens base bemerken . Ich benutze diese Funktion, um zu ermitteln, auf welcher Seite ich mich befinde, und um mich in die Warteschlange zu stellen:
quelle
Ich habe mich das Gleiche gefragt. Es gibt eine moderne Version, die verwendet
admin_enqueue_scripts
:quelle
Aus der Dokumentation :
Gleiche mit
admin_print_styles
.quelle
quelle
Um es zu machen, müssen Sie zuerst den Namen der Admin-Seite finden. Fügen Sie
admin_enqueue_scripts
mitwp_die($hook)
und gehen Sie zu Ihrer spezifischen Plug-in-Seite. Sie sehen den Seitennamen.Kopieren Sie nun den Seitennamen und verwenden Sie ihn, um die Skripte auf der jeweiligen Seite zu laden.
quelle