0

我正在尝试引入特定于该类别的样式化侧边栏。我有以下有效的代码,但它同时拉入了我的新侧边栏和默认侧边栏。我在这里做错了什么?

来自 category.php

<?php get_sidebar();
if ( in_category('39') ) {
include(TEMPLATEPATH . '/sidebar2.php');

} else {
include(TEMPLATEPATH . '/sidebar.php');

}
?>
<?php get_footer(); ?>
4

4 回答 4

3

因为您要调用侧边栏两次;做这个:

<?php

if ( in_category('39') ) {
include(TEMPLATEPATH . '/sidebar2.php');

} else {
include(TEMPLATEPATH . '/sidebar.php');

}
?>
于 2010-01-15T19:41:25.357 回答
3

提供给您的代码有一个小问题。但是正如 Eimantas 建议的那样,您可以简单地创建一个名为 category-39.php 的新文件,它将完美地完成这项工作,如果由于某种原因您仍然想继续使用您的 category.php 文件,那么这就是您需要的去做:

if ( is_category('39') ) {
  get_sidebar('2');
} else {
  get_sidebar();
}
?>
<?php get_footer(); ?>

这与您发布的代码之间的区别在于我已删除

<?php get_sidebar(); ?>

此外,我已将 in_category 更改为 is_category。这样做的原因是,当使用 is_category 查看分类页面本身时,分类列表会发生变化,而 in_category 只查看当前帖子,因此除了查看 single.php 页面时不会更改。

示例:in_category 将更改以下网址 www.mysite.com/category/stuff/myfirstpost 的侧边栏 但不会更改此网址 www.mysite.com/category/stuff 的侧边栏 只需使用 is_category 即可解决此问题。

接下来的事情是使用

get_sidebar('2');

get_sidebar();

get_sidebar(); 除了包括 sidebar.php 之外,将运行与侧边栏相关的适当的 wordpress 功能。get_sidebar('2'); 另一方面,将运行与侧边栏相关的所有适当的 wordpress 功能,同时还加载 sidebar-2.php。

希望这可以帮助,

于 2010-01-17T14:30:24.130 回答
1

从您的代码中删除它:

get_sidebar();

否则你调用这个文件“sidebar.php”两次......

如果您查看 wp 文档http://codex.wordpress.org/Function_Reference/get_sidebar

你可以这样做:

<?php
if ( in_category('39') ) :
    get_sidebar('two'); //this will include sidebar-two.php
else :
    get_sidebar();
endif;
?>
于 2010-01-17T14:14:37.350 回答
1

您应该创建名为 category-39.php 的单独模板并做一些常见的设计工作。WP 本身会注意到它应该将此模板应用于 id=39 的类别。不需要 if else 语句。

于 2010-01-17T14:17:28.573 回答