在插件小部件中注册脚本

时间:2014-11-26 作者:Kevin Nugent

我需要将一个单独的js文件加载到一个小部件中,但它无法正常工作。到目前为止我有

if ( is_active_widget( false, false, $this->id_base, true ) ) {
    function tab_widget_scripts() {
        wp_register_script( \'tabs\', plugins_url( \'tabs.js\', __FILE__ ), array(), false, true );
        wp_enqueue_script( \'tabs.js\' );
    }
}
在我的function __construct() 然后

do_action( \'wp_print_footer_scripts\', \'tab_widget_scripts\' );
内部public function widget( $args, $instance ). 谁能告诉我我做错了什么吗?

2 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

有3个问题。

首先,你在打电话do_action, 触发操作:

do_action( \'wp_print_footer_scripts\', \'tab_widget_scripts\' );
实际上,您希望向其添加函数,而不是触发它。您应该这样做:

add_action( \'wp_print_footer_scripts\', \'tab_widget_scripts\' );
其次,您正在注册此脚本:

tabs
然后将此脚本排队:

tabs.js
很明显,它们不匹配,就像我给你蛋糕的配料,然后告诉你做拿铁一样,这是行不通的。

第三,仅当小部件显示在前端时,才定义函数。这有点奇怪,您应该使用add_action 并始终对其进行定义,从而节省对is_active_widget

SO网友:Milo

do_action 应该是add_action - 您正在向队列中添加一个函数,而不是执行与操作挂钩的所有函数。也就是说,您不必挂接单独的函数,如果需要,您可以直接在小部件函数中排队。

结束