Display sidebar if blog

时间:2016-12-08 作者:Sam

我注册了两个侧边栏。一个叫做侧栏(Sidebar-1),另一个叫做博客侧栏(Sidebar-2)。

我想在博客索引和单个帖子上显示博客侧栏。因为WordPress没有conditional tag 对于博客页面,我尝试了以下途径sidebar.php:

<?php
if ( is_front_page() && is_home() ) {
  // Default homepage - Do nothing
} elseif ( is_front_page() ) {
  // Static homepage - Do nothing
} elseif ( is_home() && is_single() ) {
  // Display blog sidebar
?>

    <aside>
        <?php dynamic_sidebar( \'sidebar-2\' ); ?>
    </aside>

<?php
    } else {
      // Display main sidebar
?>

    <aside>
        <?php dynamic_sidebar( \'sidebar-1\' ); ?>
    </aside>

<?php } ?>
当我转到博客索引和单篇文章时,我希望看到博客侧栏(侧栏-2),但我看到的是侧栏(侧栏-1)。

通过阅读设置,我为我的博客帖子选择了一个页面。

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

博客页面没有条件标记。必须同时使用is\\u home()和is\\u front\\u page()来检测此页面

使用is\\u home()和is\\u front\\u page()时,必须按正确的顺序使用它们,以避免错误并测试每个用户配置:

<?php
if ( is_front_page() && is_home() ) {
 // blog listings
} elseif ( is_front_page() ) {
 // static homepage
} elseif ( is_home() ) {
 // blog page
} else {
 //everything else
}
?>
摘自https://codex.wordpress.org/Conditional_Tags

如果您想以另一种方式进行检查,posts/frontpage作为一个选项存储在数据库中,我们可以使用它来获取数据get_option 我们可以使用:

get_option(\'show_on_front\');
然后我们可以这样检查:

$front_page_type = get_option(\'show_on_front\');
if($front_page_type = \'posts\') {
 // blog page
} else {
 // static front page
}

相关推荐

在创建函数.php之后,对未定义函数的调用是_BLOG_INSTALLED()

我想在中放置一些自定义代码functions.php 这是我无法做到的。为什么我在创建后会出现以下错误(即使是空的)functions.php? 我正在使用WP 5.4.2Heroku-wp?Fatal error: Uncaught Error: Call to undefined function is_blog_installed() in /app/public.built/wp-includes/load.php:606 Stack trace: #0 /app/public.built/wp-