在插件类中注册依赖项css和js

时间:2019-09-29 作者:userone2

我有以下代码:

  public function __construct()
  {
    add_action(\'wp_enqueue_script\' , array( $this, \'initBootstrap\' ));
    add_action(\'wp_enqueue_style\' , array( $this, \'initBootstrap\' ));
    add_action(\'wp_register_script\' , array( $this, \'initParallax\' ));
    add_action(\'wp_register_style\' , array( $this, \'initParallax\' ));
    add_action(\'wp_register_script\' , array( $this, \'initSwiper\' ));
    add_action(\'wp_register_style\' , array( $this, \'initSwiper\' ));
    add_shortcode( \'bs-container\', array( $this, \'contentWrapper\') );
    add_shortcode(\'bs-col\', array( $this, \'colWrapper\') );
    add_shortcode(\'bs-parallax\', array( $this, \'parallaxSeparator\') );
    add_shortcode(\'bs-slider\', array( $this, \'imgSlider\') );
  }

  /*
  *
  */

  public function initBootstrap()
  {
    if( !wp_script_is( \'bootstrap.bundle.min.js\' , \'enqueued\' ) ){
      wp_enqueue_script( \'bootstrap\' , plugin_dir_url(__FILE__).\'/bootstrap.bundle.min.js\' );
    }

    if( !wp_style_is( \'bootstrap.min.css\' , \'enqueued\' ) ){
      wp_enqueue_style( \'bootstrap\' , plugin_dir_url(__FILE__).\'/js/bootstrap.min.css\' );
    }
  }

  /*
  *
  */

  public function initParallax()
  {
    if( !wp_script_is( \'universal-parallax.min.js\' , \'/js/universal-parallax.min.js\' ) ){
      wp_register_script( \'parallax\' , plugin_dir_url(__FILE__).\'/js/universal-parallax.min.js\' );
    }

    if( !wp_style_is( \'universal-parallax.min.css\' , \'enqueued\' ) ){
      wp_register_style( \'parallax\' , plugin_dir_url(__FILE__).\'/css/universal-parallax.min.css\' );
    }
  }

  /*
  *
  */

  public function initSwiper()
  {
    if( !wp_script_is( \'swiper.min.js\' , \'enqueued\' ) ){
      wp_register_script( \'swiper\' , plugin_dir_url(__FILE__).\'/js/swiper.min.js\' );
    }

    if( !wp_style_is( \'swiper.min.css\' , \'enqueued\' ) ){
      wp_register_style( \'swiper\' , plugin_dir_url(__FILE__).\'/css/swiper.min.css\' );
    }
  }
我想注册插件的依赖关系,但我无法注册,我的代码怎么了?我用过add_action 在我的插件类的构造中,但没有加载所需的文件,我注册的短代码需要js和css。谁能给我一个建议?

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

你使用的钩子不正确。唯一的钩子是wp_enqueue_scripts (复数)。您使用wp_enqueue_style()wp_register_script() 等等,但钩子总是一样的。

因此:

add_action(\'wp_enqueue_script\' , array( $this, \'initBootstrap\' ));
add_action(\'wp_enqueue_style\' , array( $this, \'initBootstrap\' ));
add_action(\'wp_register_script\' , array( $this, \'initParallax\' ));
add_action(\'wp_register_style\' , array( $this, \'initParallax\' ));
add_action(\'wp_register_script\' , array( $this, \'initSwiper\' ));
add_action(\'wp_register_style\' , array( $this, \'initSwiper\' ));
需要:

add_action(\'wp_enqueue_scripts\' , array( $this, \'initBootstrap\' ));
add_action(\'wp_enqueue_scripts\' , array( $this, \'initBootstrap\' ));
add_action(\'wp_enqueue_scripts\' , array( $this, \'initParallax\' ));
add_action(\'wp_enqueue_scripts\' , array( $this, \'initParallax\' ));
add_action(\'wp_enqueue_scripts\' , array( $this, \'initSwiper\' ));
add_action(\'wp_enqueue_scripts\' , array( $this, \'initSwiper\' ));
这就是它不起作用的原因,但你也滥用了wp_script_is(). 它不会影响您的代码,因为结果总是false,但您需要传递脚本的句柄,而不是文件名。

因此:

if( !wp_style_is( \'universal-parallax.min.css\' , \'enqueued\' ) ){
  wp_register_style( \'parallax\' , plugin_dir_url(__FILE__).\'/css/universal-parallax.min.css\' );
}
应为:

if( !wp_style_is( \'parallax\', \'enqueued\' ) ){
  wp_register_style( \'parallax\' , plugin_dir_url(__FILE__).\'/css/universal-parallax.min.css\' );
}
然而,你真的根本不需要那个条件。如果脚本已经排队,则不会发生任何事情,因此没有理由检查它。

相关推荐

将代码添加到unctions.php以根据登录状态有选择地显示样式有什么问题

当我尝试向函数添加以下代码时。php我不断收到错误(网站宕机,似乎表明有php错误)。我一直盯着这段代码看,似乎不明白为什么它在添加到函数时会出现错误。php。对我应该改变什么有什么建议吗?谢谢function hide_prompt() {    if(is_user_logged_in()) { echo \' <style> .app { display: none!important; } </style> \'