1

我试图弄清楚如何根据插件配置文件中的条件 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. 是否可以从插件的配置文件中删除队列并将其放在我的 function.php 文件中,这样每当插件更新时,我就不必进行更改?

这是文件(将文件入队的调用位于最底部): http: //pastebin.com/sDt4sTCH

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

4

1 回答 1

1

在查询之前,您调用 is_page() 太早了,因此没有 $post 可用于测试。在这种情况下, if (not 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 ;
于 2012-07-01T22:21:46.740 回答