it-swarm.com.de

Hinzufügen von Skripten im Admin-Bereich

Ich möchte Skripte nur für eine von mir erstellte Administrationsseite in die Warteschlange stellen.

Hier finden Sie ein Beispiel: http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Load_scripts_only_on_plugin_pages

Aber es funktioniert nicht für mich, denke ich, weil ich mein Plugin in einer Klasse schreibe. add_action funktioniert nur mit im Konstruktor ??

Gibt es eine Möglichkeit, einer bestimmten Seite innerhalb einer Klasse Skripts hinzuzufügen?

Ich habe mir diese Methode ausgedacht: Meine Haupt-Plugin-Seite ist eine Liste von benutzerdefinierten Beitragstypen (wenn Sie 'show_in_menu' => 'custom_page_slug' in den Beitragstypargumenten festlegen, übernimmt sie diese Seite mit einer Liste von Beiträgen). Beim Erstellen des Beitragstyps habe ich eine Variable mit dem Namen des Beitragstyps eingerichtet:

$args = register_post_type('post-type', $args );
$this->posttype = $args->name;

Dann diesen Aufruf im Konstruktor:

add_action( 'admin_print_scripts', array( &$this, 'scripts_init' ) );

Und das in der Funktion scripts_init:

global $current_screen;    
if( $current_screen->id == $this->posttype )
{
wp_enqueue_script( ... );
}

Es klappt. Aber es scheint komplizierter zu sein, als es sein muss. Gibt es einen besseren Weg, dies zu erreichen?

Vielen Dank!

2
chrisguitarguy

Anstatt sich nur mit admin_print_scripts zu verbinden , sollten Sie sich mit Ihrem speziellen Seiten-Slug verbinden, der an admin_print_scripts- angehängt ist. (Beachten Sie den nachgestellten Bindestrich). Die Referenzseite, auf die Sie verlinkt haben, zeigt dies, aber Sie scheinen die Verkettung von $page mit admin_print_scripts- wegzulassen.

z.B:

$page = add_theme_page( 'Options', 'Options', 'edit_theme_options', 'options-panel', 'topf_admin_options_markup' );

add_action( "admin_print_scripts-$page", 'enqueue_my_admin_scripts' );

Ich verwende den von $page zurückgegebenen Slug add_theme_page;. Sie sollten Ihren eigenen Slug bereitstellen. Skripte werden nur für Ihre spezifische Seite geladen und es ist nicht erforderlich, sie in Ihrer Enqueue-Funktion zu überprüfen.

5
Jeff