如何将样式从模板文件移动到<head>节?

时间:2012-07-29 作者:Paul

设想以下情况:

//header.php contains:
<header id="header">logo and navigation</header>

//my-template.php contains:
<?php get_header(); ?>
     <style type="text/css">#header { display: none; }</style>
     <div class="main-container-of-my-template"></div>
<?php get_footer(); ?>
这将禁用<header> 用于我的模板。php在大多数现代浏览器中(IE9除外),但它不是有效的解决方案。有没有一种方法可以使用wp_enqueue_style(); 直接在我的模板中。php使其加载该样式<head> 在标题中。php?只是为了让它有效。

我想保持这个模块化,所以我不想把这样的if语句放在标题中。php(不再是独立的模块化页面模板):

<?php if(is_page_template( \'my-template.php\' )){ ?>
<style type="text/css">#header { display: none; }</style>
<?php } ?>

2 个回复
SO网友:amit

把样式放在函数之前怎么样get_header();

<style type="text/css">#header { display: none; }</style>
<?php get_header();?>
<div class="main-container-of-my-template"></div>
<?php get_footer(); ?>
但是,不建议这样做,因为它甚至在<html> 不在<head> 但根据您的要求,这可能是通过编辑“我的模板”添加样式的唯一方法。php文件。

注意-

加载脚本的第二种方法(推荐)<head> 不修改标题的节。php使用的是主题函数。php将样式放入队列<head>. 下面是实现该技巧的代码-

确保你做了一个新的new-style.css 包含必要样式的模板目录中的文件

<?php   
    function wpse_60052_load_style() { 
        if(is_page_template( \'my-template.php\' )) { 
            wp_enqueue_style(\'mystyle\', get_bloginfo(\'template_directory\').\'/new-style.css\');
        }
} 
add_action( \'wp_enqueue_scripts\', \'wpse_60052_load_style\' );
?>

SO网友:Mario Peshev

选项一是使用相同的is\\u page\\u模板,并使用wp\\u enqueue\\u样式,只有当该页面模板可用时,该样式才会添加一些样式表。

选项二是将此代码嵌入到页面模板标题中(这在其他模板中显然不可见)。

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。