将‘wp_enQueue_脚本’(Css)包括到多个模板

时间:2017-08-10 作者:Henry

我的5个模板需要特定的Javascript。目前,下面的内容可以很好地将Javascript加载到页面模板A中。

 add_action(\'wp_enqueue_scripts\',\'css-flags\');
  function css-flags(){
  if ( is_page_template(\'page-template-a.php\') ) {
   wp_enqueue_style(\'css-flags\', get_template_directory_uri() . 
   \'/css/flags.min.css\', array(), \'1.0.0\', false );
  }
 }
我想我可以简单地执行以下操作,将相同的CSS文件添加到模板B、C和D,只需将模板名称添加到“IF”变量。

 add_action(\'wp_enqueue_scripts\',\'css-flags\');
  function css-flags(){
  if ( is_page_template(\'page-template-a.php\',\'page-template-b.php\',\'page-template-b.php\') ) {
   wp_enqueue_style(\'css-flags\', get_template_directory_uri() . 
   \'/css/flags.min.css\', array(), \'1.0.0\', false );
  }
 }
谢谢你的指点。

3 个回复
最合适的回答,由SO网友:Ben HartLenn 整理而成

页面模板似乎是加载CSS的一个更模糊的基础。可能不使用模板名称,而是使用页面名称,因为这对主题用户来说更明显。如果有兴趣,您可以尝试以下方式:

add_action(\'wp_enqueue_scripts\', \'load_special_page_styles\');
function load_special_page_styles() {
    global $post;

    if( is_page() ) {

        switch( $post->post_name ) { // post_name is actually the page slug            
            case \'a-page\': // if page slug is equal to \'a-page\'...              
            case \'b-page\':
            case \'c-page\':
            case \'d-page\':
            case \'e-page\':
                wp_enqueue_style( \'css-flags\', get_stylesheet_directory_uri() . \'/css/flags.min.css\', array(), \'1.0.0\', \'all\' ); // Note slight differences in use of wp_enqueue_style here
                wp_enqueue_script( \'js-flags\', get_template_directory_uri() . \'/js/flags.min.js\', array(\'jquery\'), \'1.0.0\', true ); // helpful param #2 loads jquery if not already loaded, and param #4 loads the flags.min.js script in the footer, after page content loads
                break;
        }
    } 
}

SO网友:Milo

is_page_template 接受单个参数,可以是字符串或数组。您只需将您的值作为单个array() 要使其工作:

if ( is_page_template( array(\'page-template-a.php\',\'page-template-b.php\',\'page-template-b.php\') ) ){
    // do stuff
}

SO网友:Cedon

在PHP中,|| 是OR运算符,所以您必须以这种方式构建它is_page_template() 单个模板,因此您的条件将如下所示:

if ( is_page_template(\'page-template-a.php\') || is_page_template(\'page-template-b.php\') || is_page_template(\'page-template-c.php\') ) {
     // Code Here
}

结束

相关推荐

Multiple single templates?

假设我有一个名为“事件”的自定义帖子类型,它有几个用于图像、文档等的自定义元框。。是否可能有两个不同的单一模板?例如:我有一个列出所有事件的页面,如果我单击一个事件,单一视图将显示我在event single中输入的所有元信息。php模板。现在,我想有一个不同的页面,再次列出所有事件,但如果我单击查看单个事件,则会使用不同的模板,以便显示与事件相关的其他元数据。或更好:page-events.php lists all events -> click on event -> shows sin