2013-03-14 37 views
1

我想要的只是将我的自定义JavaScript添加到我的插件的主页。如何仅在WordPress中选定的插件页面上调用注册的JavaScript?

这里是我做过什么:

1.首先注册我的剧本,

function register_my_plugin_script() { 
     /* Register our script. */ 
     wp_register_script('my-plugin-script', plugins_url('/script.js', __FILE__), array('jquery')); 
    } 
add_action('admin_init', 'register_my_plugin_script'); 

2.然后对其作出了一个电话,

function call_my_script(){ 
    wp_enqueue_script('my-plugin-script'); 
} 

3 。然后试图只在我的主页上打电话给它:

function my_home_page(){ 
    add_action('admin_enqueue_scripts', 'call_my_script'); 
} 

但它没有添加脚本。

添加菜单页面的进一步代码:

function my_menu_pages(){ 
    add_menu_page('some title', 'some menu', 'manage_options', 'my-plugin-homepage', 'my_home_page'); 
} 
add_action('admin_menu', 'my_menu_pages'); 

注: 如果我直接在my_home_page功能包括我的脚本无需注册或调用这个样子,那么它的工作原理。

function my_home_page(){ 
    wp_enqueue_script('my-plugin-script', plugins_url('/script.js', __FILE__), array('jquery')); 
} 

这样做的最佳方法是什么?

回答

1

在管理区域中有一个用于插件页面的钩子 - 但确定它的名称可能很困难。

请先尝试:

add_action('admin_enqueue_scripts', 'my_plugin_enqueue_scripts'); 
function my_plugin_enqueue_scripts($hook) 
{ 
    echo "<!-- Hook = {$hook} -->" . PHP_EOL; 
} 

...然后访问你的插件的页面在管理区域,并查看HTML源代码找到该变量的输出。或者,设置断点并在调试器中查看它。

一旦你找到了钩的名字,你可以做你的插件代码如下:

add_action('admin_enqueue_scripts', 'my_plugin_enqueue_scripts'); 
function my_plugin_enqueue_scripts($hook) 
{ 
    if ($hook == 'my_plugin_page_hook-location') 
    { 
     wp_register_script(...); 
     wp_enqueue_script(...); 

     wp_register_style(...); 
     wp_enqueue_style(...);  
    } 
} 
+0

它没有包括脚本,但根据剧本它不执行动作。但是,当我把它包含在我的问题的底部时,它就会起作用。任何想法 ? – atif 2013-03-14 11:12:52

+0

脚本是否出现在页面的HTML输出中?具有相同的脚本名称(在您的示例中为'my-plugin-script')是否已在别处注册? – 2013-03-15 06:35:08

+0

是的,它确实出现在查看其页面源时,并没有其他地方存在该名称的脚本。 – atif 2013-03-18 04:05:52

相关问题