WP在特定页面模板上的排队样式


24

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

Answers:


29

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

另一个答案有效,但条件取决于您的页面信息(myurl.com/this-is-the-slug)从未改变。一种更可靠的方法(IMO),并且适合这种情况的一种方法是,使用is_page_template('example-template.php')条件检查。


22

您可以is_page( 'landing-page-template-one' )将页面特定样式/脚本周围的条件用作整体入队语句的一部分。

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

您甚至可以将更多内容链接elseif到其他页面等中。

参考:函数参考-is_page()


不客气,肖恩,很高兴能为您提供帮助。
爱德华·凯西

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

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

2

如果页面模板位于主题的子目录中(自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

1

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

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

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

1

假设您的模板名称为Temper,并且您想在该页面上加载引导程序,以便可以在特定页面模板上加入样式,如下所示:

转到function.php文件,然后检查以下情况:

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');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.