it-swarm.com.de

Laden Sie Sie Pluginskripte und -stile nur auf der Pluginseite

Hallo WordPress-Benutzer,

Beim Ausführen von 2 selbst erstellten Wordpress-Plugins ist ein Problem aufgetreten. Ich werde den folgenden Code verwenden:

define('PLUGIN_URL', plugin_dir_url( __FILE__ ));
add_action( 'admin_enqueue_scripts', 'plugin_load_js_and_css' );

function plugin_load_js_and_css() {
        wp_register_style( 'plugin.css', PLUGIN_URL . 'plugin.css', array());
        wp_enqueue_style( 'plugin.css');

        wp_register_script( 'plugin.js', PLUGIN_URL . 'plugin.js', array('jquery'));
        wp_enqueue_script( 'plugin.js' );
    }
}

Dieses Stylesheet wird jedoch überall im Admin-Bereich geladen. Jetzt habe ich das im Codex gefunden:

function my_enqueue($hook) {
    if( 'edit.php' != $hook )
        return;
    wp_enqueue_script( 'my_custom_script', plugins_url('/myscript.js', __FILE__) );
}
add_action( 'admin_enqueue_scripts', 'my_enqueue' );

Aber dieser Code funktioniert nicht für meine .. Hat jemand eine andere Option? Oder vielleicht wissen Sie, warum es bei mir nicht funktioniert?

4
Ronny Rook

Wenn Sie eine Plugin-Optionsseite registrieren, erhalten Sie einen Haken von der Registrierungsfunktion:

$hook = add_menu_page(
    'T5 Demo',        // page title
    'T5 Demo',        // menu title
    'manage_options', // capability
    't5-demo',        // menu slug
    'my_render_page'  // callback function
);

Verwenden Sie diesen Hook, um die Skripte und Stile in eine Warteschlange einzureihen:

add_action( "admin_print_styles-$hook", "my_enqueue_style" );
add_action( "admin_print_scripts-$hook", "my_enqueue_script" );

Siehe mein Plugin T5 Admin Menu Demo für ein Beispiel.

Definieren Sie keine Konstante PLUGIN_URL. Sie werden in Kollisionen mit anderem Code geraten.

7
fuxia