为什么内容来自单身?

时间:2013-08-20 作者:pagol

下面是我的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

你们能告诉我哪里出错了吗?

2 个回复
最合适的回答,由SO网友:alex 整理而成

这是解决方案。。。请试试这个。。。。。。

<?php
/**
 * The template for displaying all pages.
 *
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages
 * and that other \'pages\' on your WordPress site will use a
 * different template.
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */

get_header(); ?>   

<?php
$post = $wp_query->post;
if ( in_category(\'11\') ) {
    include(TEMPLATEPATH . \'/single_our_services.php\');
}    
elseif ( in_category(\'44\') ) {
    include(TEMPLATEPATH . \'/single_rugged_product.php\');
}             
elseif ( in_category(\'50\') ) {
    include(TEMPLATEPATH . \'/team_leader.php\');
}
elseif ( in_category(\'50\') ) {
    include(TEMPLATEPATH . \'/saas_maker.php\');
}
?>
<?php //get_sidebar(); ?>
<?php get_footer(); ?>

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{

 }

结束

相关推荐