0

我使用此代码在 wordpress 中显示自定义 single.php 页面(按类别),它工作正常。

 get_header(); ?>

        <div id="container">
            <div id="content" role="main">

            <?php
              $post = $wp_query->post;

              if (in_category('4')) {
                  include(TEMPLATEPATH.'/loop-single-recept.php');
              } elseif (in_category('7')) {
                  include(TEMPLATEPATH.'/loop-single.php');
              } else {
                  include(TEMPLATEPATH.'/loop-single.php');
              }
                ?>


            </div><!-- #content -->
        </div><!-- #container -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

但我也想在每个 single.php 页面中显示自定义侧边栏。

4

2 回答 2

2

您可以创建多个侧边栏文件,然后使用(通常为空)参数调用它们<?php get_sidebar() ?>

例如,您创建一个替代侧边栏并将其命名为 sidebar-alternative.php,然后使用<?php get_sidebar('alternative'); ?>

所以你的代码可能是;

        <?php

          if (in_category('4')) {
              get_sidebar();
          } elseif (in_category('7')) {
              get_sidebar('alternative');
          } else {
              get_sidebar('alternative');
          }

         ?>

顺便说一句,我没有提出问题,但您应该考虑接受您的一些答案,因为它会使人们无法回答 - Stackoverflow Answers

于 2012-08-12T18:16:05.623 回答
0

有时 in_category() 似乎不起作用,我喜欢从 $wp_query 变量中获取类别名称并包含我自己的文件:

if($wp_query->query['category_name'] == 'your-category-name-1') {

    include_once('sidebar-one.php');

} else if($wp_query->query['category_name'] == 'your-category-name-2') {

    include_once('sidebar-two.php');

} else {

    include_once('sidebar-three.php');

}
于 2016-09-02T16:32:38.847 回答