Почему контент поступает из одного?

Ниже приведен мой код страницы 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 ).

Общий код страницы :

 <?php the_content(); ?> 

Код страницы салона :

  <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 и загружается без каких-либо проблем, но также загружает общую страницу … Я понятия не имею, почему она загружает контент-common.php как Что ж.

Можете ли вы, ребята, сказать мне, где я делаю ошибку?

Solutions Collecting From Web of "Почему контент поступает из одного?"

Вот решение … попробуйте этот материал ……

 <?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(); ?> 

Прежде всего, пожалуйста, не используйте сообщения о сообщениях, вы храните целый мир боли: когда использовать WP_query (), query_posts () и pre_get_posts

Что касается ошибки, которую вы испытываете, взглянув на логику:

  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') истинно, то else также является утверждением и будет истинным (потому что in_category( 'staff' ) будет оценивать значение false – без нее в обеих категориях).

Вы хотите структуру:

  if( ... ){ }elseif( ... ){ }else{ }