如何:有条件地将JS和样式表入队,用于自定义发布类型(单一模板和存档模板)

时间:2021-03-17 作者:Nate

我已经为我的子主题创建了一个插件,其中存储了自定义函数。此外,在插件中,我还将样式表和排入队列。js控制两个模板的输出,用于名为workshops的自定义帖子类型。(站点上唯一需要排队样式和.js的地方。)

记住这一点,当活动模板是单个车间时。php和归档研讨会。php,我想调用以下内容。js和样式表:

Bootstrap 4用于构建页面,Google Maps API用于显示地图和位置pin,猫头鹰旋转木马和巧克力。js在模式弹出窗口中显示图像。用于初始化上述部分内容的js文件我在下面使用的代码不适用于适当的if语句,但在非条件状态下可以:

function renchlist_enqueue_styles() {
  if ( is_page_template( array( \'archive-workshop.php\', \'single-workshop.php\' ) ) ) {
   wp_enqueue_style(\'bootstrap-grid-nk\', get_stylesheet_directory_uri() .\'/library/bootstrap/css/bootstrap-grid.min.css\');
    wp_enqueue_style ( \'nk-owl-style\', get_stylesheet_directory_uri () . \'/library/owl/css/owl.carousel.css\', array (), \'1.3.3\' );
    wp_enqueue_style ( \'owl-style\', get_stylesheet_directory_uri () . \'/library/owl/css/owl.theme.default.min.css\');
    wp_enqueue_style(\'nk-chocolat-style\', get_stylesheet_directory_uri() .\'/library/chocolat/css/chocolat.css\');
  }
}
add_action(\'wp_enqueue_scripts\', \'renchlist_enqueue_styles\');



function renchlist_add_scripts() {
  if ( is_page_template( array( \'archive-workshop.php\', \'single-workshop.php\' ) ) ) {

     wp_enqueue_script( \'nk-combined-js\', get_stylesheet_directory_uri() . \'/library/renchlist-combined.js\', array(\'jquery\'), null, true );
     wp_enqueue_script( \'google-map\', \'https://maps.googleapis.com/maps/api/js?key=XXXXXXXXXXXX\', array(), \'3\', true );
     wp_enqueue_script( \'google-map-init\', get_stylesheet_directory_uri() . \'/library/js/google_maps.js\', array(\'google-map\'), \'0.1\', true );
   
  }


我很困惑,因为我的错误源-感谢任何帮助。

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

尝试使用is_post_type_archive()is_singular():

// ...
if ( is_post_type_archive( \'my-post-type\' ) || is_singular( \'my-post-type\' ) ) {
    // your enqueue code goes here
}
// ...
这些函数将检查您是否分别位于帖子类型的存档页面上my-post-type 或者一个my-post-type 邮递(更改my-post-type 当然,您注册自定义帖子类型时将其命名为什么。)