我正在制定主题,我想使用页面模板添加登录页面。我找不到任何地方显示如何为特定页面模板排入样式或js。有什么建议。
例如登陆页面1-与博客或首页相比,登陆页面模板-one.php将需要非常不同的样式和js。

#1 楼

如果您打算进行大量WP开发,则应在此页面上添加书签:http://codex.wordpress.org/Conditional_Tags

其他答案也可以,但是条件取决于您的页面。 com / this-is-the-slug)永不变。一种更可靠的方法(IMO),并且适合这种情况,将使用is_page_template('example-template.php')条件检查。

#2 楼

您可以在页面特定样式/脚本周围使用条件is_page( 'landing-page-template-one' )作为全部入队语句的一部分。其他页面等。

参考:函数参考-elseif

评论


不客气,肖恩,很高兴能为您提供帮助。

–爱德华·凯西
2012年8月15日19:27

我认为使用is_page_template()是更可取的,因为页面标记很容易更改。该解决方案虽然可以正常工作,但如果更改了子弹,它就会中断。如果将来有人遇到问题,请参阅kchjr的解决方案。

– BODA82
2015年11月14日在22:46

谢谢!对于其他偶然发现此问题的人:条件语句is_page必须位于该操作所附的函数中,并且不能包装add_action语句本身。如果确实将add_action语句包装在条件语句中,则将在页面处理的早期就知道它是什么页面。

–亨德卡
16年5月25日,下午3:32

#3 楼

如果页面模板位于主题的子目录中(自WP 3.4起),请在文件夹名称前加上模板名称的斜杠,例如:

is_page_template( 'templates/about.php' );


所以,整个功能如下所示:

function my_enqueue_stuff() {
  if ( is_page_template( 'landing-page-template-one' ) ) {
    /** Call landing-page-template-one enqueue */
  } else {
    /** Call regular enqueue */
  }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );


参考:官方文档

评论


感谢您提到is_page_template()检查应该在enqueue函数内部,而不是在它周围。

– gregn3
19年7月1日在18:48

#4 楼

我不知道其他答案中提供的解决方案是否正常工作,但是(由于没有公认的答案!)目前看来正确的答案是:

function my_enqueue_stuff() {
    if ( get_page_template_slug() == 'landing-page-template-one.php' ) {
        wp_enqueue_script('my-script-handle', 'script-path.js', ... );
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );


根据https://developer.wordpress.org/reference/functions/is_page_template/的说法,is_page_template()仅在循环之外起作用。

评论


根据提到的文档,它不能在循环内使用

–Selrond
17年2月20日在13:02

在循环之外。那就是我说的... *脸红*

–richplane
17年2月21日在13:58

#5 楼

假设您的模板名称为Temper,并且您希望在该页面上加载引导程序,以便可以在特定页面模板上加入样式,例如: />
function temper_scripts() {

    if(basename(get_page_template()) == 'temper.php'){

       wp_enqueue_style('bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css');

    }

}

add_action('wp_enqueue_scripts', 'temper_scripts');


#6 楼

这一个完美。

      function my_enqueue_stuff() {

 // "page-templates/about.php" is the path of the template file. If your template file is in Theme's root folder, then use it as "about.php".

        if(is_page_template( 'page-templates/about.php' ))
        {
            wp_enqueue_script( 'lightgallery-js', get_template_directory_uri() . '/js/lightgallery-all.min.js');
            wp_enqueue_script('raventours-picturefill', "https://cdn.jsdelivr.net/picturefill/2.3.1/picturefill.min.js", true, null);
        }
        }
        add_action( 'wp_enqueue_scripts', 'my_enqueue_stuff' );