根据页面条件排队脚本

时间:2012-06-29 17:27:20

标签: php javascript wordpress wordpress-plugin

我正在尝试根据我的插件配置文件中的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() ),它补充说。不可思议?

  1. 有没有办法包括条件?
  2. 公共功能部分是否会改变条件的读取方式?
  3. 是否可以从插件的配置文件中删除enqueue并将其放在我的function.php文件中,这样每当插件更新时,我都不需要进行更改?
  4. 这是文件(对文件进行排队的调用位于最底层):http://pastebin.com/sDt4sTCH

    我包含了实际文件,因此您可以获得它所使用的上下文。提前感谢!! 编辑更好的代码格式

1 个答案:

答案 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 ;