下面是我的single.php 页面代码:
<?php while ( have_posts() ) : the_post(); ?>
<h3>
<?php the_title(); ?>
</h3>
<?php
if ( in_category( \'salon\' ) ) {
get_template_part( \'content\', \'salon\' );
}
if ( in_category( \'staff\' ) ) {
get_template_part( \'content\', \'staff\' );
}
else {
get_template_part( \'content\', \'common\' );
}
?>
<?php endwhile; // end of the loop. ?>
通常我打开任何帖子都可以,但当我打开沙龙页面时(
content-salon.php) 然后内容会加倍,因为公共页面(
content-common.php) 也已加载。
Common page code:
<?php the_content(); ?>
Salon page code:
<ul class="st_tabs">
<?php
// The Query
query_posts( array ( \'category_name\' => \'salon\' ) );
// The Loop
while ( have_posts() ) : the_post(); ?>
<li><a href="#st_content_<?php echo the_slug(); ?>" rel="tab_<?php echo the_slug(); ?>" class="st_tab">
<?php the_title(); ?>
</a></li>
<?php endwhile;
// Reset Query
wp_reset_query();
?>
</ul>
</div>
<a href="#next" class="st_next"></a> </div>
<div class="st_view_container">
<div class="st_view">
<?php
// The Query
query_posts( array ( \'category_name\' => \'salon\' ) );
// The Loop
while ( have_posts() ) : the_post(); ?>
<div id="st_content_<?php echo the_slug(); ?>" class="st_tab_view">
<?php the_content(); ?>
</div>
<?php endwhile;
// Reset Query
wp_reset_query();
?>
</div>
正常逻辑是,当沙龙类帖子打开时,它将加载
content-salon.php 页面,它加载没有任何问题,但它也加载了公共页面。。。我不知道为什么要装
content-common.php 也
你们能告诉我哪里出错了吗?
SO网友:Stephen Harris
首先,请不要使用查询帖子,你正在积累一个痛苦的世界:When to use WP_query(), query_posts() and pre_get_posts
至于您遇到的bug,请看一下逻辑:
if ( in_category( \'salon\' ) ) {
//Include a particular template if I\'m in category salon
}
if ( in_category( \'staff\' ) ) {
//Include a particular template if I\'m in category staff
} else {
//Include a particular template if I\'m not in category staff
}
请注意
else
仅指
is_category(\'staff\')
有条件的所以如果
is_category(\'salon\')
如果为true,则else is语句也应为true(因为
in_category( \'staff\' )
将评估为false-除非它在两个类别中)。
您需要结构:
if( ... ){
}elseif( ... ){
}else{
}