我正在尝试根据我的插件配置文件中的condition- is_page()来弄清楚如何将文件(javascript和样式)排入队列。一个星期以来,我一直在努力寻找一种在网上找到的无数的解决方案。
这是文件中的原文:
public function enqueue_files() {
wp_enqueue_script("jquery");
wp_enqueue_style("wpsqt-main",plugins_url('/css/main.css',WPSQT_FILE));
}
这是我的尝试:
public function enqueue_files() {
if ( is_page(xxx) ) {
wp_enqueue_script("jquery");
wp_enqueue_style("wpsqt-main",plugins_url('/css/main.css',WPSQT_FILE));
}
}
当我测试if ( is_page() )
时,它会从所有页面的标题中删除脚本和样式。但是,在将其更改为:
if ( !is_page() )
,它补充说。不可思议?
这是文件(对文件进行排队的调用位于最底层):http://pastebin.com/sDt4sTCH
我包含了实际文件,因此您可以获得它所使用的上下文。提前感谢!! 编辑更好的代码格式
答案 0 :(得分:1)
在查询之前,您过早地调用is_page(),因此没有$ post可用于测试。在这种情况下,如果(不是is_page())将永远为真。我绕过这种方式的方法是将脚本插入页脚而不是标题(在查询之后)。请注意,您需要在网站页脚中设置<?php wp_footer() ?>
,通常在</body>
class MyPlugin {
//In the constructor we want to set a few methods as action callbacks
public function __construct () {
add_action('init', array(&$this, 'register_my_scripts'));
add_action('wp_print_footer_scripts', array(&$this, 'print_my_scripts'));
}
//This method is called by init, and registers our plugin scripts for later use
public function register_my_scripts () {
wp_enqueue_style("wpsqt-main",plugins_url('/css/main.css',WPSQT_FILE));
}
//This method is called by wp_print_footer_scripts, and prints our <script> through wp_footer()
public function print_my_scripts () {
//Only render the script on specific pages
if ( is_page(xxx) ) {
wp_print_scripts("wpsqt-main", array('jquery'));
}
}
}
或者,您可以使用全局变量,只需将脚本打印到任何位置即可将其设置为true。例如,如果您不知道页面名称。只需将上面的print_my_scripts方法替换为此方法。
public function print_my_scripts () {
global $print_my_script;
//Only render the script on pages which have asked for it
if ($print_my_script) {
wp_print_scripts("wpsqt-main", array('jquery'));
}
}
并将其添加到任何短代码,小部件,页面模板......任何告诉我们的脚本使用短代码,小部件,模板等在页面上打印的内容。
global $print_my_script ;
$print_my_script = true ;