子页如何在Wordpress上继承父级的样式?

时间:2012-01-07 22:04:49

标签: css wordpress parent-child

我正在设计一个主题,每个页面都有不同的文字,背景和其他元素的颜色。我能够使用以下方式设置每个页面的样式(以及相关的帖子类别):

 <?php if ( is_home() || is_search() || is_archive ()) 
    {
    ?>
    <link rel="stylesheet" href="<?php bloginfo('template_url')?>/css/home.css" type="text/css" media="screen" />
    <?php } elseif( is_category( 'Turismo a Bra' ) || is_page('Turismo a Bra')) 
    {
    ?>
    <link rel="stylesheet" href="<?php bloginfo('template_url')?>/css/turismo-a-bra.css" type="text/css" media="screen" />      
    <?php } elseif ( is_category ('Eventi') || is_page('Eventi'))
    {
    ?>
    <link rel="stylesheet" href="<?php bloginfo('template_url')?>/css/eventi.css" type="text/css" media="screen" />
    <?php } elseif ( is_category ('Arte e Cultura') || is_page('Arte e Cultura'))
    {
    ?>
    <link rel="stylesheet" href="<?php bloginfo('template_url')?>/css/arte-e-cultura.css" type="text/css" media="screen" />
    <?php } elseif ( is_category ('Enogastronomia')|| is_page('Enogastronomia'))
    {
    ?>
    <link rel="stylesheet" href="<?php bloginfo('template_url')?>/css/enogastronomia.css" type="text/css" media="screen" />
<?php } elseif ( is_category ('Natura')|| is_page('Natura'))
    {
    ?>
    <link rel="stylesheet" href="<?php bloginfo('template_url')?>/css/natura.css" type="text/css" media="screen" />
    <?php } else {  ?>

    <?php } ?>

当我(我有很多)子页面出现问题时。我希望他们被称为他们的父母。我虽然WP有is_sub_page(#),但没有运气。

你知道我应该在条件中添加什么来使标题在处理子页面时理解,在这种情况下,获取父级的ID并根据该样式页面。

我是php和wordpress的新手,它在我的头脑中很有意义,但我不知道如何用它来表达。

非常感谢,一个例子是here(子页面在右上角。

1 个答案:

答案 0 :(得分:1)

要检查帖子是否从具有特定类别或页面标题的页面下降,那么您可以获取其父级并进行检查,例如:

in_category( 'Turismo a Bra', $post->post_parent )

由于您已经有很多代码并且您多次执行此操作,因此最好将整个检查封装在一个函数中:

function needs_style( $style, $the_post ){
    $needs_style = false;
    //check details of this post first
    if( $the_post->post_title == $style ){        //does the same as in_page()
        $needs_style = true;
    } 
    elseif( in_category( $style, $the_post ) ){
        $needs_style = true;
    }
    //otherwise check parent if post has one - this is done recursively 
    elseif( $the_post->post_parent ){
        $the_parent = get_post( $the_post->post_parent );
        $needs_style = needs_style( $style, $the_parent );
    }
    return $needs_style; 
}

所以你的代码看起来像:

if ( is_home() || is_search() || is_archive ()) { 
    //set stylesheet
}
elseif( needs_style( 'Turismo a Bra', $post ) ) {
    //set stylesheet
}
elseif( needs_style( 'Eventi', $post ) ) {
    //set stylesheet
}