Wie passe ich diese Lösung an mein Plugin an? (Bitte siehe den Link).
Ich reihe mein CSS- und JS-Skript wie folgt ein:
function my_plugin_init() {
wp_enqueue_script('my_plugin_script', plugins_url('js/the_filepath.js', __FILE__), array('jquery'));
wp_enqueue_style( 'my_plugin_css', plugins_url( '/css/the_filepath.css', __FILE__ ) );
}
add_action('init', 'my_plugin_init');
Ich habe versucht, dies in die functions.php des Themas zu schreiben, aber es hat nicht funktioniert:
function remove_my_plugin_extras() {
remove_action('init', 'my_plugin_init');
}
if( !is_page('My_Page') ) {
add_action('wp_head', 'remove_my_plugin_extras');
}
Das Skript und die CSS sind noch geladen. Wie passe ich die Lösung in diesem Fall an?
// Use both for scripts & styles *)
wp_enqueue_scripts // (for the frontend)
login_enqueue_scripts // (for the login screen)
admin_enqueue_scripts // (for the admin dashboard)
*) Lesen Sie diesen Artikel @wpdevel .
Lesen Sie weiter im Codex über die drei Haken
Am admin_enqueue_scripts
-Hook haben Sie auch ein Argument: Der $hook_suffix
:
add_action( 'admin_enqueue_scripts', function( $hook )
{
var_dump( $hook );
} );
Wenn Sie eine Admin (Unter) -Menüseite registrieren, können Sie das Ergebnis, das der Seitenhook ist, in einer Variablen speichern:
function register_admin_page()
{
// Register (sub)menu page
$hook_suffix = add_submenu_page( $your_args_array );
// Add styles to hook
add_action( "load-{$hook_suffix}", 'callback_function' );
}
// Use one of those hooks to register the page
add_action( 'admin_menu', 'register_admin_page' );
add_action( 'user_admin_menu', 'register_admin_page' );
add_action( 'network_admin_menu', 'register_admin_page' );
// Register your styles & scripts in here
function callback_function()
{
// do stuff
}
Folgende
global $hook_suffix, $typenow, $pagenow, $self, $parent_file, $submenu_file
sind auf einer Vielzahl von Admin-Seiten verfügbar. Verwenden Sie sie, um zu überprüfen, ob Sie sich auf der gewünschten Seite befinden und erst dann Sachen zu erledigen.
// Example
if ( 'edit.php' !== $GLOBALS['pagenow'] )
return;
Noch besser als das Testen mit einer Variablen, die im laufenden Betrieb zurückgesetzt werden kann (Beispiel) ...
$GLOBALS['wp'] = array( 'lost', 'my', 'contents', );
... verwendet das Objekt \WP_Screen
auf Admin-Seiten:
add_action( 'admin_enqueue_scripts', function( $hook )
{
/** @var \WP_Screen $screen */
$screen = get_current_screen();
var_dump( $screen );
if ( 'post.php' !== $screen->base )
return;
} );
function load_custom_wp_admin_style($hook) {
// $hook is string value given add_menu_page function.
if($hook != 'toplevel_page_mypluginname') {
return;
}
wp_enqueue_style( 'custom_wp_admin_css', plugins_url('admin-style.css', __FILE__) );
}
add_action( 'admin_enqueue_scripts', 'load_custom_wp_admin_style' );