Wp_enQueue_script注册脚本,但不创建html标记

时间:2014-04-03 作者:codearachnid

我编写了一个插件,只在特定的管理页面上对脚本和样式表进行排队。它在我的开发环境和多个生产服务器中工作;但是,最近引入到一个使用插件的站点,它不会将脚本或样式表标记呈现到页面上。代码如下:

add_action( \'admin_enqueue_scripts\', \'gf_notification_attachment_attach_script\');
// actual function to enqueue
function gf_notification_attachment_attach_script(){
    global $gf_notification_attachment;
    $plugin = $gf_notification_attachment;
    if( GFForms::get_page() == \'notification_edit\'){
        $script = $plugin->plugin_url . \'script\';
        $script .= ( WP_DEBUG ) ? \'.js\' : \'.min.js\';
        wp_enqueue_script( $plugin->text_domain, $script, array(\'gform_gravityforms\'), $plugin->version, true );
        wp_enqueue_style( $plugin->text_domain, $plugin->plugin_url . \'style.css\', array(), $plugin->version );         
    }
}
我已将调试代码插入echo$script 在函数的条件中,它正确列出了路径。我还甩了global$wp_scripts 调用enqueue后返回屏幕,并查看它与列表中的所有其他脚本一起正确列出。

作为进一步的测试,我确认了仅有的两个活动插件是Gravity Forms和我的插件(依赖于GF)。我还激活了默认的2014主题。我还删除了对Gravity表单的依赖(管理页面的条件检查),并尝试了,但它仍然不会呈现脚本标记。

我不知道是什么原因导致它没有在这个网站上显示出来。即使wp_enqueue_script 在其他插件中工作。有什么想法吗?如果你想测试插件并拥有“重力形式”,你可以download and test the full code base 你自己

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

这最终与重力形式下无冲突模式的工作方式产生了奇怪的冲突。最后,在他们的支持下,尝试n+1组合,结果发现冲突模式导致了问题:

将“无冲突模式”(no conflict mode)设置为“开”(ON)将防止在Gravity表单管理页面上打印无关的脚本和样式,从而减少与其他插件和主题的冲突。

关于使用$hook参数admin_enqueue_scripts 注释中提到这是因为插件(重力表单)如何在表单编辑器中进行特定分页。对WordPress来说,它看起来像一个页面,但实际上是由特定的子页面参数分隔的?page=gf_edit_forms&view=settings&subview=notification

我希望这对其他人有所帮助,看看特定于注销脚本的插件设置/代码。

结束

相关推荐

Plugins_url函数混合了系统路径和URL

在我的WordPress小部件中,我使用以下代码:wp_register_script(\'jquery-ui.widget\', plugins_url(\'assets/js/jquery-ui-1.9.2.widget.js\', dirname( __FILE__ ))); 不幸的是,代码给了我一个无效的URL,它与我的系统路径混合在一起:http://test.dev/wp-content/plugins/C:/projects/wordpress/plugins/assets/js/