如何让css和js只在特定的模板上排队?

时间:2020-06-18 作者:ralphjsmit

我正忙于我的家。php模板和我需要一些CSS/JS文件,这些文件只加载到特定的模板上。我试着用

if ( is_page_template( \'home.php\' ) ) { //ENQUEUE CODE },

但不知怎么的,这不管用。我一点也不知道错误在哪里。当我删除if条件时,所有文件都已正确加载,但当我添加该条件时,所有文件均未加载。

非常感谢您帮助解决此问题!

if ( is_page_template( \'home.php\' ) ) {

    
wp_enqueue_style( \'home\', get_template_directory_uri() . \'/assets/css/home.css\', array(), filemtime(get_template_directory() . \'/assets/css/home.css\'), \'all\' );


if ( \'hide\' !== get_theme_mod( \'sidebar_position\', \'hide\' ) ) {
wp_enqueue_style( \'sidebar\', get_template_directory_uri() . \'/assets/css/sidebar.css\', array(), filemtime(get_template_directory() . \'/assets/css/sidebar.css\'), \'all\' );
}


wp_register_script( \'blog-ajax-script\', get_stylesheet_directory_uri(). \'/assets/js/blog-ajax-script.js\', array(\'jquery\'), filemtime(get_template_directory() . \'/assets/js/blog-ajax-script.js\'), true );
$script_data_array = array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ), \'security\' => wp_create_nonce( \'load_more_posts\' ), );
wp_localize_script( \'blog-ajax-script\', \'blog\', $script_data_array );
wp_enqueue_script( \'blog-ajax-script\' );

}

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

您已经在正确地执行操作(仅在特定模板上将CSS和JS文件排队),并且is_page_template() 确实是一个可以用来检查当前或特定页面或帖子是否使用特定Page Template — i、 e.具有PHP注释的模板Template Name: <name here> 在文件的顶部。

但是,该功能仅适用于静态页面或帖子,这些页面或帖子在WordPress的帖子数据库表中有一个条目,该表允许您为特定页面或帖子选择页面模板。或使您能够以编程方式(例如使用update_post_meta() 功能)设置该页面或帖子的页面模板:

update_post_meta( 123, \'_wp_page_template\', \'your-template.php\' ); // 123 is the post ID
但对于动态页面,如主页,当其设置为显示最新帖子的博客页面时,is_page_template() 很可能会回来false, 所以对于博客页面,我只想使用is_home() 其中之一conditional tags in WordPress:

function my_theme_styles() {
    if ( is_home() ) {
        // Enqueue styles for the home/blog page.
    }

    // Enqueue other styles.
}
add_action( \'wp_enqueue_scripts\', \'my_theme_styles\' );

function my_theme_scripts() {
    if ( is_home() ) {
        // Enqueue scripts for the home/blog page.
    }

    // Enqueue other scripts.
}
add_action( \'wp_enqueue_scripts\', \'my_theme_scripts\' );
因此,对于这样的动态页面,很难确定所使用的确切模板,但您可以只使用相关的条件标记,而不是对照模板进行检查,如is_home(), is_front_page(), is_category(), 等:)