2014-10-09 41 views
0

我有一個奇怪的問題,一些職位出現在分類,有些帖子出現有,但他們沒有檢查。後在錯誤的類別

結果是在前臺他們也出現了。

這是我category.php(但我不認爲這是事)

<?php 
get_header(); 
?> 

<section id="wrapper" class="page <?php echo get_query_var('cat'); ?>"> 
    <div id="container"> 

     <?php 

      $category = get_category(get_query_var('cat')); 
      $cat_id = $category->cat_ID; 
      query_posts('showposts=1&cat='.$cat_id); 

      if (have_posts()) : 

       while (have_posts()) : the_post(); 

       get_template_part('content', get_post_format()); 

       endwhile; 

      endif; 
     ?> 
    </div> 
</section> 
<?php 
    get_footer(); 
?> 

我看了看錶「_term_relationships」一切都是正確的,他們不是在錯誤的類別。

所以,也許有人有線索找出?

PS:我使用WPML,但如果我desactive它,這是同樣的問題

+1

放下您的自定義查詢,使用主循環。也永遠不會使用'query_posts',這只是一個非常糟糕的函數用來創建自定義查詢。 – 2014-10-09 13:14:19

+0

你的意思是我在後臺的自定義jQuery?因爲我不使用一個 – H4mm3R 2014-10-09 13:18:46

回答

0

你不應該使用query_posts(), 見(https://wordpress.stackexchange.com/questions/1753/when-should-you-use-wp-query-vs-query-posts-vs-get-posts

試試這個:

<?php 

      $category = get_category(get_query_var('cat')); 
      $cat_id = $category->cat_ID; 

      $args = array('category' => $cat_id); 


      $query2 = new WP_Query($args); 

      if ($query2->have_posts()) : 

       while ($query2->have_posts()) : 
        $query2->the_post(); 

        get_template_part('content', get_post_format()); 

       endwhile; 

      endif; 
     ?> 
+0

那麼,在數組中它不是'category',而是'cat'。 Thx的幫助,但問題保持不變。 – H4mm3R 2014-10-09 14:39:56

+0

如果您刪除query_posts並只留下循環?最新的網址? – zenith 2014-10-09 14:56:22

+0

http://www.ultraflux.net/category/expertise/ http://www.ultraflux.net/category/services/ 可見,他們有相同的文章,但這篇文章只是在專業知識,不應該出現在服務 – H4mm3R 2014-10-10 13:00:06

0

首先,千萬不要用query_posts來構造任何類型的查詢

注意:此功能不適用於插件或主題。正如後面所解釋的,改變主查詢有更好,更高性能的選項。 query_posts()過於簡單並且存在問題,通過用查詢的新實例替換頁面的主查詢來修改主查詢。它效率低下(重新運行SQL查詢),並在某些情況下徹底失敗(特別是在處理帖子分頁時)。

其次,不要在任何類型的歸檔頁面或主頁上更改自定義查詢的主查詢。正確的方法是在執行主查詢之前使用pre_get_posts來更改查詢變量。退房this post我剛纔做了

第三,Wordpress中的分類頁面的工作方式很奇怪。訪問類別頁面時,它將顯示所選類別的帖子和所選類別的子類別中的帖子。我敢打賭,這就是你所看到的。這是非常正常的行爲。如果您需要更改此項,請查看@ialocin的this answer on WPSE。爲了這個答案的好處,這裏是解決方案

add_filter( 
    'parse_tax_query', 
    'wpse163572_do_not_include_children_in_category_archive_parse_tax_query' 
); 
function wpse163572_do_not_include_children_in_category_archive_parse_tax_query($query) { 
    if ( 
     ! is_admin() 
     && $query->is_main_query() 
     && $query->is_category() 
    ) { 
     // as seen here: https://wordpress.stackexchange.com/a/140952/22534 
     $query->tax_query->queries[0]['include_children'] = 0; 
    } 
} 
+0

謝謝。我對你的帖子瞭解了很多。但是,不,我的類別不是兒童。他們是2個父母... – H4mm3R 2014-10-10 10:28:02

+0

您是否有任何自定義查詢,您還沒有重置,或任何'pre_get_posts'實例 – 2014-10-10 10:31:14

+0

您是否已回到您的頁面上的主循環。你刪除'query_posts'。複製你的index.php並重命名爲category.php – 2014-10-10 13:11:25