2013-10-20 122 views
3

我想從搜索我的博客文章中排除類別。我的類別ID是。類別名稱是perfect_work從wordpress文章中排除類別

這裏是我的WordPress博客模板代碼:

<div id="left" class="eleven columns"> 

    <?php 
    $temp = $wp_query; 
    $wp_query= null; 
    $wp_query = new WP_Query(); 
    $wp_query->query('paged='.$paged); 
    ?> 

    <?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> 

     <div class="post" id="post-<?php the_ID(); ?>"> 

      <div class="title"> 

       <h2><a href="<?php the_permalink() ?>" title="Permanent Link to <?php the_title(); ?>" ><?php the_title(); ?></a></h2> 

       <div class="postmeta"> <span>by <?php the_author_posts_link(); ?></span> | <span><?php the_time('l, F jS, Y') ?></span> | <span><?php the_category(', '); ?></span> </div> 

      </div> 

      <div class="entry"> 

      <?php $image_attr = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'top_feature'); ?>  

       <a href="<?php the_permalink() ?>"><img src="<?php echo $image_attr[0]; ?>" class="postim scale-with-grid" id="blog-thumb" ></a> 
       <?php wpe_excerpt('wpe_excerptlength_archive', ''); ?> 
       <div class="clear"></div> 
      </div> 
     </div> 

    <?php endwhile; ?> 
    <?php getpagenavi(); ?> 
    <?php $wp_query = null; $wp_query = $temp;?> 
</div> 

我使用

$wp_query = new WP_Query('cat=-62'); 

其無法正常工作已經嘗試過。我也把

<?php query_posts('cat=-62'); ?> 
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> 

它的工作,但頁面導航無法正常工作,也不顯示其他職位。只有前5個展會。

任何解決方案?

+0

你知道你可以通過1個多參數'WP_Query'功能吧? –

回答

1

獲取的頁碼

$paged = get_query_var('paged') ? get_query_var('paged') : 1; 

然後你可以使用

$wp_query = new WP_Query('cat=-62&paged=' . $paged); 

或者使用

$cat_id = get_cat_ID('perfect_work'); 
$wp_query = new WP_Query('cat=-' . $cat_id . '&paged=' . $paged); 

然後循環

if($wp_query->have_posts()) : 
    while ($wp_query->have_posts()) : $wp_query->the_post(); 
     // ... 
    endwhile; 
endif; 
+0

我剛剛使用:$ wp_query-> query('cat = -62&paged ='。$ paged);它的作品完美。很多。:) –

+0

@NoDiv_NoClass,歡迎您:-) –

0

試試這一個,你必須指定showposts限制的職位

<?php $wp_query->set('cat', '-62'); ?> 
<?php query_posts('showposts=10'); ?> 
<?php if(have_posts()) : ?> 
<?php while(have_posts()) : the_post(); ?> 

. 
. 
. 
<?php endwhile; ?> 
<?php endif; ?> 

注:負號表示該 屬於該類別從數據庫中檢索到的所有帖子的排斥。在 轉,循環將永遠不會有該類別ID的帖子,並且只有 處理其他類別ID的指定數量的帖子。

+0

我知道減號,也知道如何排除它。但它不起作用。無論如何,已經得到了答案。感謝您嘗試幫助我。 –

0

請閱讀WP_Query食品法典委員會,這是國際海事組織非常詳細,看category PARAMS部分

只需添加一個減號-在你不想的類別的前面,所以下面的代碼就意味着顯示有10類和11個職位,但排除類別62

$recent = new WP_Query("showposts=3&cat=10,11,-62") 
+0

我覺得OP知道,因爲他試過了,問題似乎是其他 –

+0

它不起作用。我已經試過這個:(。 –

0

你不需要前或後,查詢使用$temp變量。你應該使用這樣的事情:

//This should do the trick 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 

$args = array(
    'cat' => -62, 
    'paged' => $paged 
); 

// the query 
$the_query = new WP_Query($args); ?> 

<?php if ($the_query->have_posts()) : ?> 

    <!-- the loop --> 
    <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
    <h2><?php the_title(); ?></h2> 
    <?php endwhile; ?> 
    <!-- end of the loop --> 

    <!-- pagination here --> 
    //The real trick! 
    <?php wp_reset_postdata(); ?> 

有兩點需要注意:

  • 的分頁查詢參數
  • 要重置查詢中使用wp_reset_postdata()
+0

謝謝你的技巧,但它不工作。無論如何,我從「2003年恢復」的答案得到的解決方案。 –

+0

@NoDiv_NoClass:我認爲是相同的解決方案 –

+0

功能上是的,但它不工作在我的博客當我用它$ args 我不知道爲什麼,但我認爲有博客代碼有一些問題。 無論如何,我真的不是php的專家 –

相關問題