帖子是从哪里获得侧边栏的?

时间:2013-05-23 作者:Nikki Mather

我试图在帖子中显示的侧栏上添加一个if语句。我希望帖子显示一个特定的侧栏,如果它在类别x中,并显示一个不同的侧栏,如果它不在类别x中。

为此,我尝试使用以下代码:

<?php if ( in_category( \'featured-listing\' ) || ( in_category( \'listing-post\' ) )) { ?>
    <?php get_sidebar(); ?>
<?php } else { ?>
   <?php get_sidebar2(); ?>
<?php } ?>
我试过编辑这两首单曲。php和页面。php无效。我想可能是因为我从我的孩子主题中删除了get\\u侧边栏,Wordpress又回到了212侧边栏,但在尝试了一些事情之后,情况似乎不是这样。

So——总结;我试着编辑两个单曲。php和页面。php尝试根据帖子分配到的类别显示不同的侧栏。

提前谢谢。

2 个回复
SO网友:fuxia

get_sidebar() 接受参数$name. 然后将查找文件sidebar-{$name}.php.

因此,您可以做的是:

get_sidebar( get_post_type() ); // search for sidebar-post.php or sidebar-page.php
或:

if ( in_category( array( \'featured-listing\', \'listing-post\' ) ) )
    get_sidebar( \'listing\' ); // sidebar-listing.php
else
   get_sidebar();

SO网友:Ravinder Kumar

当您要为以下内容定义单独的侧栏时:

1.岗位

2.和第页

3.类别在岗

将下面的代码放入sidebar.php

<?php
if( \'post\' == get_post_type()){
    $categories = get_the_category();
    foreach( $categories as $category ){
        $sidebar_template[]=\'sidebar-\'.$category->slug.\'.php\';
    }
    //search for template for category
    $cat_template = pathinfo( locate_template( $sidebar_template ) );
    if( !empty( $cat_template )){
        $cat_template_name=explode( \'-\', $cat_template[\'filename\'] , 2);
        get_sidebar( $cat_template_name[1] );
    }
    else{
        get_sidebar( \'post\' );
    }

}else{
    get_sidebar(\'page\');
}
?>
并创建

1.sidebar-page.php 对于第页

2.sidebar-post.php 对于post

3.sidebar-category_slug.php 对于职位类别

代码的作用:

1、如果get_post_type 等于post然后,我检索当前post的所有类别,并测试其类别的任何侧栏模板。如果是,则类别的侧栏将调用(sidebar-category_slug.php )否则post侧栏将调用(sidebar-post.php ).

2、如果get_post_type 等于page,则page的侧栏将调用(sidebar-page.php ).

Note: 仅为假设当前条件而驱动的代码。我们可以为不同级别修改它,例如,如果我们想为子类别分离边栏模板。

结束