WP_ENQUEUE_SCRIPTS在短码内不起作用

时间:2016-03-03 作者:Prakash

<?php

class OrdersShortcode {

    function __construct() {
        add_shortcode(\'order_ajax_form\', array(&$this, \'order_ajax_form\'));
    }

    function my_enqueued_assets()
    {
        wp_enqueue_script(\'my-script\', "//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js");
        wp_enqueue_script(\'my-script2\', plugin_dir_url(__FILE__) . \'js/easyResponsiveTabs.js\');
        wp_enqueue_script(\'my-script3\', plugin_dir_url(__FILE__) . \'js/fb.js\');
        wp_enqueue_script(\'my-script4\', plugin_dir_url(__FILE__) . \'js/verify.js\');
        wp_enqueue_style(\'my-style\', plugin_dir_url(__FILE__) . \'css/style.css\');
        wp_enqueue_style(\'my-style2\', plugin_dir_url(__FILE__) . \'css/easy-responsive-tabs.css\');
    }

    function order_ajax_form() {
        add_action(\'wp_enqueue_scripts\', array( $this, \'my_enqueued_assets\'));

        include(dirname(dirname(__FILE__)) . \'/views/form.php\');
    }
}
我正在尝试使用wp_enqueue_scripts 在短代码函数中。它不起作用。

1 个回复
最合适的回答,由SO网友:Prakash 整理而成
$shortcode = new Shortcode_Class();
class Shortcode_Class
{
    /**
     * If you should add the script or not
     *
     * @var bool
     */
    private $addScript = false;

    public function __construct()
    {
        add_shortcode(\'test_shortcode\', array($this, \'shortcode_content\'));

        // wp_enqueue_scripts
        // If you use the below the CSS and JS file will be added on everypage
        // add_action( \'wp_enqueue_scripts\', array($this, \'add_shortcode_scripts\'));

        // Add styles and scripts to the page
        add_action(\'wp_footer\', array($this, \'add_shortcode_scripts\'));
    }

    public function shortcode_content( $attr, $content )
    {
        $this->addScript = true;
        ?>
        <h1>Shortcode Content Being Displayed</h1>
        <?php
    }

    public function add_shortcode_scripts()
    {
        if(!$this->addScript)
        {
            return false;
        }

        wp_enqueue_script(\'shortcode-js\', get_stylesheet_directory_uri() . \'/js/shortcode.js\', false);
    }
}

This helped!