只有在使用窗口小部件时才有一种方法可以将脚本排入队列(注意,如果是活动的话,请注意,但如果它存在于页面/帖子的侧边栏内)?甚至更好:只有当某个特定字符串出现在侧边栏内时,才有办法将脚本排入队列?
答案 0 :(得分:9)
只需将小部件功能中的脚本或样式表排入队列即可。这是最简单,最好的方法。
public function widget( $args, $instance ) {
// outputs the content of the widget
// Enqueue a script needed for
// the Widget's output
wp_enqueue_script( 'your_script', $path, $deps );
// Rest of widget output goes here...
}
答案 1 :(得分:2)
我实际上没有测试过,但是一个可能的解决方案是将脚本排入页脚。
构建窗口小部件时,可以向窗口小部件类的widget()
函数添加一些代码(实际将窗口小部件输出到屏幕的功能)。您可以从此处just make sure you flag it to be used in the footer致电wp_enqueue_script()
。
这将打印调用wp_footer()
而不是调用wp_head()
的脚本,但仅限于在页面上调用窗口小部件。
基本上,只需过滤字符串的侧边栏即可。如果字符串存在,则将脚本排入页脚,就像使用小部件一样。
您还可以做其他两件事。首先,您可以使用jQuery来命名您的功能。基本上,给你的小部件一个唯一的ID(比如“my-unique-id”),然后异步下载你的脚本:
jQuery(document).ready(function() {
if( jQuery('#my-unique-id').length > 0 ) {
jQuery.getScript( [your-script-url] );
}
}
此代码将检查您的小部件ID是否在页面上...如果是,它会从服务器下载您的脚本,如果没有,它什么都不做。您还可以在PHP中构建此代码,以包含对脚本文件的相对或绝对引用。这取决于你。
或者,您可以将脚本包含在窗口小部件代码中的内联<script>
块中。这将以您希望的方式工作,但它会破坏各种标准编码实践。代码通常应位于<header>
或直接放在结束</body>
标记之前...但您可以将它放在任何您想要的位置。
答案 2 :(得分:2)
是
我认为'wp_footer'钩子是因为这个钩子是在页脚处执行的,并且可能是仅在使用窗口小部件时添加脚本的最佳方式。
class Your_Widget extends WP_Widget{
function widget( $args, $instance ) {
add_action('wp_footer',array($this,'front_end_scripts'));
}
function front_end_scripts(){
?><script type="text/javascript">
console.log('this works!');
/*
Or if you need external scripts then you may use
$.getScript([your-script-url] );
*/
</script> <?php
}
}