Carregar scripts e estilos de plug-in somente na página do plug-in

4

Olá, usuários do wordpress,

Estou com um problema ao executar 2 plug-ins Wordpress. Vou usar o seguinte 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' );
    }
}

Mas ele está carregando essa folha de estilo em todos os lugares no painel de administração. Agora eu encontrei isso no codex:

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

Mas este código não está funcionando para o meu .. Alguém tem outra opção? Ou talvez saiba por que não está funcionando para mim?

    
por Ronny Rook 29.03.2013 / 18:28

2 respostas

7

Quando você registra uma página de opções de plug-in, recebe um gancho da função 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
);

Use esse gancho para enfileirar os scripts e estilos:

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

Veja meu plugin Demonstração do T5 Admin Menu para ver um exemplo.

Não defina uma constante PLUGIN_URL . Você vai colidir com outro código.

    
por fuxia 29.03.2013 / 18:36
0

Depois de mais pesquisas, o @fuxia tem a melhor resposta, mesmo usando o Redux Framework para um menu admin. Ao usar o Redux, $hook será toplevel_page_ concatenado com o valor inserido em page_slug no arquivo options-init.php .

Por exemplo:

$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" );

Além disso, se você não se lembra do que você definiu como my_option, basta abrir o painel de administração do Redux e ver o URL, deve ser:

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

    
por Chris Sprague 28.03.2018 / 18:01