有没有其他方法可以在wordpress中排队脚本?

时间:2018-05-30 12:40:56

标签: php wordpress scripting

解决了所有问题后,我陷入了WordPress中一个非常简单的问题。这是排列样式表和js脚本。我正在拼命寻找解决方案。我不知道为什么这不起作用。我想我遵守了规范中的规则,但它并没有加载。即使我打开页面源代码来查找这些文件但没有找到。 文件名和位置如下:

popup_plugin
   |---- assets\
            |---css\
                 |--- styles.css

js结构与上面相同

现在这里是我正在尝试的代码。我正在使用单例模式来实例化类。

add_action( 'plugins_loaded', array(SMARTPOPUP::getInstance(), 'init') );
class SMARTPOPUP
{
    private static $instance = null;
    public function init(){
        add_action('wp_enqueue_scripts', array($this, 'frontEndAssets'));
    }
    public function frontEndAssets(){
        wp_enqueue_style( 
            'wpsgdprcss', 
            plugin_dir_url( __FILE__ ) . 'assets/css/styles.css', 
            array() 
        );
        wp_enqueue_script( 
            'wpsgdprjs', 
            plugin_dir_url( __FILE__ ) . 'assets/js/scripts.js', 
            array(),
            false 
        );
        $localizedata = array(
            'ajaxurl'       => admin_url('admin-ajax.php'),
            'noncesecure'   => wp_create_nonce(WP_SMART_GDPR_SLUG),
        );
        wp_localize_script( 'wpsgdprjs', 'wpsgdprdata', $localizedata );
    }
    public static function getInstance(){
        if(!isset(self::$instance)){
            self::$instance = new self();
        }
        return self::$instance;
    }
}

3 个答案:

答案 0 :(得分:0)

尝试以下代码

menu-item

答案 1 :(得分:0)

function custom_plugin_enqueue() {
    wp_enqueue_style( 'wpsgdprcss', plugin_dir_url( __FILE__ ) . 'assets/css/styles.css' ); 
    wp_enqueue_script( 'wpsgdprjs', plugin_dir_url( __FILE__ ) . 'assets/js/scripts.js' );
}
add_action('wp_enqueue_scripts', 'custom_plugin_enqueue');

答案 2 :(得分:0)

我认为你的代码应该可行,所以我测试了它。具体来说,我测试了以下内容:

<?php /*
Plugin Name: Junk
*/
add_action( 'plugins_loaded', array(SMARTPOPUP::getInstance(), 'init') );
class SMARTPOPUP
{
    private static $instance = null;
    public function init(){
        add_action('wp_enqueue_scripts', array($this, 'frontEndAssets'));
    }
    public function frontEndAssets(){
        wp_enqueue_style( 
            'wpsgdprcss', 
            plugin_dir_url( __FILE__ ) . 'assets/css/styles.css', 
            array() 
        );
        wp_enqueue_script( 
            'wpsgdprjs', 
            plugin_dir_url( __FILE__ ) . 'assets/js/scripts.js', 
            array(),
            false 
        );
        $localizedata = array(
            'ajaxurl'       => admin_url('admin-ajax.php'),
            'noncesecure'   => wp_create_nonce('WP_SMART_GDPR_SLUG'),
        );
        wp_localize_script( 'wpsgdprjs', 'wpsgdprdata', $localizedata );
    }
    public static function getInstance(){
        if(!isset(self::$instance)){
            self::$instance = new self();
        }
        return self::$instance;
    }
}

这会生成以下样式和脚本元素:

<link rel='stylesheet' id='wpsgdprcss-css'  href='http://localhost/wp-content/plugins/junk/assets/css/styles.css?ver=4.9.6' type='text/css' media='all' />

<script type='text/javascript'>
/* <![CDATA[ */
var wpsgdprdata = {"ajaxurl":"http:\/\/localhost\/wp-admin\/admin-ajax.php","noncesecure":"8b77af0183"};
/* ]]> */
</script>
<script type='text/javascript' src='http://localhost/wp-content/plugins/junk/assets/js/scripts.js?ver=4.9.6'></script>

我做的唯一更改是将WP_SMART_GDPR_SLUG替换为'WP_SMART_GDPR_SLUG',因为您可能忘记为其添加定义。

您的代码本身没有任何问题。

您确定您的代码正在执行吗?

我认为这不重要,但我使用PHP 7.1.17运行WordPress版本4.9.6。