Cargar secuencias de comandos y estilos de complementos solo en la página de complementos

4

Hola usuarios de wordpress,

Tengo un problema al ejecutar 2 complementos de Wordpress creados por nosotros mismos. Usaré el siguiente código:

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' );
    }
}

Pero está cargando esta hoja de estilo en todo el panel de administración. Ahora encontré esto en el códice:

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' );

Pero este código no funciona para mi .. ¿Alguien tiene otra opción? O tal vez sepa por qué no funciona para mí?

    
pregunta Ronny Rook 29.03.2013 - 18:28

2 respuestas

7

Cuando registra una página de opción de complemento, obtiene un gancho de la función de registro:

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

Utilice este enlace para poner en cola los scripts y estilos:

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

Vea mi complemento Demostración del menú de administración de T5 para ver un ejemplo.

No defina una constante PLUGIN_URL . Te enfrentarás a colisiones con otro código.

    
respondido por el fuxia 29.03.2013 - 18:36
0

Después de más investigaciones, @fuxia tiene la mejor respuesta, incluso cuando se utiliza Redux Framework para un menú de administración. Cuando use Redux, $hook estará toplevel_page_ concatenado con el valor que ingresó en page_slug en el archivo options-init.php .

Por ejemplo:

$opt_name = my_option

'page_slug' => $opt_name.'_settings'

add_action( "admin_print_styles-**toplevel_page_my_option_settings**", "my_enqueue_style" );
add_action( "admin_print_scripts-**toplevel_page_my_option_settings**", "my_enqueue_script" );

Además, si no recuerdas a qué configuraste mi opción, simplemente abre el panel de administración de Redux y mira la URL, debería ser:

yoursite/wp-admin/admin.php?page=**my_option_settings**&tab=1

    
respondido por el Chris Sprague 28.03.2018 - 18:01

Lea otras preguntas en las etiquetas