我正在尝试引入特定于该类别的样式化侧边栏。我有以下有效的代码,但它同时拉入了我的新侧边栏和默认侧边栏。我在这里做错了什么?
来自 category.php
<?php get_sidebar();
if ( in_category('39') ) {
include(TEMPLATEPATH . '/sidebar2.php');
} else {
include(TEMPLATEPATH . '/sidebar.php');
}
?>
<?php get_footer(); ?>
我正在尝试引入特定于该类别的样式化侧边栏。我有以下有效的代码,但它同时拉入了我的新侧边栏和默认侧边栏。我在这里做错了什么?
来自 category.php
<?php get_sidebar();
if ( in_category('39') ) {
include(TEMPLATEPATH . '/sidebar2.php');
} else {
include(TEMPLATEPATH . '/sidebar.php');
}
?>
<?php get_footer(); ?>
因为您要调用侧边栏两次;做这个:
<?php
if ( in_category('39') ) {
include(TEMPLATEPATH . '/sidebar2.php');
} else {
include(TEMPLATEPATH . '/sidebar.php');
}
?>
提供给您的代码有一个小问题。但是正如 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。
希望这可以帮助,
从您的代码中删除它:
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;
?>
您应该创建名为 category-39.php 的单独模板并做一些常见的设计工作。WP 本身会注意到它应该将此模板应用于 id=39 的类别。不需要 if else 语句。