在管理区域中添加脚本

时间:2011-06-12 作者:chrisguitarguy

我只想为我创建的管理页面将脚本排队。

这里有一个例子:http://codex.wordpress.org/Function_Reference/wp_enqueue_script#Load_scripts_only_on_plugin_pages

但我认为这对我不起作用,因为我在一个类中编写插件。add\\u操作仅在构造函数中使用??

有没有办法从类中向特定页面添加脚本?

我想出了这个方法:我的主插件页面是一个自定义帖子类型的列表(如果您设置\'show_in_menu\' => \'custom_page_slug\' 在post type args中,它通过一个post列表接管该页面)。创建post类型时,我使用post类型名称设置了一个变量:

$args = register_post_type(\'post-type\', $args );
$this->posttype = $args->name;
然后调用构造函数:

add_action( \'admin_print_scripts\', array( &$this, \'scripts_init\' ) );
这个在scripts_init 功能:

global $current_screen;    
if( $current_screen->id == $this->posttype )
{
wp_enqueue_script( ... );
}
它起作用了。但它似乎比需要的更复杂。有没有更好的方法来实现这一点?

谢谢

1 个回复
最合适的回答,由SO网友:Jeff 整理而成

而不是admin_print_scripts only, 您应该挂接到附加到admin_print_scripts-. (注意尾部连字符)。您链接到的参考页显示了这一点,但您似乎忽略了$page 连接到admin_print_scripts-.

例如:

$page = add_theme_page( \'Options\', \'Options\', \'edit_theme_options\', \'options-panel\', \'topf_admin_options_markup\' );

add_action( "admin_print_scripts-$page", \'enqueue_my_admin_scripts\' );
我在用子弹$page 返回自add_theme_page; 你应该提供你自己的子弹。脚本将仅为您的特定页面加载,无需在您的排队功能中进行检查。

结束

相关推荐

GPL and plugins

插件开发中心说:“您的插件必须与GPLv2兼容。”。但我发现Topsy插件在GPLv3下。http://www.gnu.org/licenses/rms-why-gplv3.html 声明GPLv2和GPLv3不兼容。那么这应该被允许吗?我想使用Topsy插件中的一些代码。那么,我应该在GPLv2或GPLv3下发布插件吗??