我编写了一个插件,只在特定的管理页面上对脚本和样式表进行排队。它在我的开发环境和多个生产服务器中工作;但是,最近引入到一个使用插件的站点,它不会将脚本或样式表标记呈现到页面上。代码如下:
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 你自己
最合适的回答,由SO网友:codearachnid 整理而成
这最终与重力形式下无冲突模式的工作方式产生了奇怪的冲突。最后,在他们的支持下,尝试n+1组合,结果发现冲突模式导致了问题:
将“无冲突模式”(no conflict mode)设置为“开”(ON)将防止在Gravity表单管理页面上打印无关的脚本和样式,从而减少与其他插件和主题的冲突。
关于使用$hook参数admin_enqueue_scripts
注释中提到这是因为插件(重力表单)如何在表单编辑器中进行特定分页。对WordPress来说,它看起来像一个页面,但实际上是由特定的子页面参数分隔的?page=gf_edit_forms&view=settings&subview=notification
我希望这对其他人有所帮助,看看特定于注销脚本的插件设置/代码。