为除home.php以外的所有页面设置不同的CSS

时间:2013-02-13 作者:Ofeargall

我正在创建我的第一个WordPress主题,我是PHP新手。我环顾了一下四周,但似乎找不到具体的答案。

在我的标题中。php我想包括一些条件逻辑来设置除主页之外的所有页面的CSS。这是我当前的代码,但一定有更好的方法。

还有几件事我很好奇。。。我是否需要确保管理员不会选择这些风格,我的方法是否被视为“最佳实践”,或者是否有更好的方法?

<!--The Global Styles -->
<link rel="stylesheet" type="text/css" href="<?php bloginfo(\'stylesheet_url\'); ?>" media="screen" />
<!-- Styles specific to the home page -->
<?php if(is_home() || is_front_page()) :?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo(\'template_directory\'); ?>/css/ot_nav_widget.css" media="screen" />    
<link rel="stylesheet" type="text/css" href="<?php bloginfo(\'template_directory\'); ?>/css/birdcage.css" media="screen" />
<?php endif;?>
 <!-- Set styles for any pages other than the home page -->
<?php if(!is_home() || !is_front_page()) :?>
<link rel="stylesheet" type="text/css" href="<?php bloginfo(\'template_directory\'); ?>/css/ot_internal_nav_widget.css" media="screen" />
<?php endif;?>

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

而不是

<?php if(!is_home() || !is_front_page()) :?>
你可以使用

<?php else: ?>
此样式不会影响wp管理部分,仅影响您的web前端,因为它在中使用header.php.

安全的方法是使用wp_register_style()wp_enqueue_style() 如法典中所述:

http://codex.wordpress.org/Function_Reference/wp_enqueue_stylehttp://codex.wordpress.org/Function_Reference/wp_register_style

在您的情况下,可能是:

function wpse85659_theme_styles()  
{ 
  // Register the styles
  wp_register_style( \'global-style\', get_template_directory_uri() . \'/style.css\', array(), \'20130213\', \'screen\' );
  wp_register_style( \'home-widget-style\', get_template_directory_uri() . \'/css/ot_nav_widget.css\', array(\'global-style\'), \'20130213\', \'screen\' );
  wp_register_style( \'home-birdcage-style\', get_template_directory_uri() . \'/css/birdcage.css\', array(\'global-style\',\'home-widget-style\'), \'20130213\', \'screen\');
  wp_register_style( \'internal-widget-style\', get_template_directory_uri() . \'/css/ot_internal_nav_widget.css\', array(\'global-style\'), \'20130213\', \'screen\' );

  // Enqueing:
  wp_enqueue_style( \'global-style\' );
  if(is_home() || is_front_page()) :
    wp_enqueue_style( \'home-widget-style\' );
    wp_enqueue_style( \'home-birdcage-style\' );
  else:
    wp_enqueue_style( \'internal-widget-style\' );
  endif;

}
add_action(\'wp_enqueue_scripts\', \'wpse85659_theme_styles\');
您可以将此代码示例放入functions.php 文件记住使用wp_head() 在您的header.php 对于这种方法。

结束

相关推荐

WordPress的核心CSS样式真的都是必需的吗?

On WordPress Codex 下面列出了这些CSS样式。这是一个相当大的风格列表,但似乎它们是多余的。上面写着:每个主题的样式中都应该有这些或类似的样式。css文件能够正确显示图像和字幕。确切的HTML元素、类和ID值将取决于您使用的主题的结构这是否意味着all 这些样式应该在一个主题中?对于已经声明的对齐样式,这种特殊性的原因是什么?通过观察这一点,似乎可以大幅减少。将此降低到最低限度的缺点是什么?/* =WordPress Core from http://codex.wordpress.or