2011-08-30 15 views
1

投稿を除外していますので、ブログページ(カテゴリ4〜11)からいくつかのカテゴリが除外されています。私は、次のコードを使用してそうやってWordpress Exclude Categories投稿は保持しますが、ページごとに投稿件数を保持します

if (have_posts()) : while (have_posts()) : the_post(); 
    $category = get_the_category(); 


    if($category[0]->cat_ID > 11 || $category[0]->cat_ID < 4){ 
     continue; 
    } 

これは、ページからカテゴリの投稿を除外するために動作しますが、それはページあたりの投稿数は10であることを保持しないか、それが中に設定されているもの管理者

Wordpressループでスキップした投稿の投稿数をプログラムで1ずつ減らすと、カテゴリの投稿は除外されますが、ページごとに同じ量の投稿を保持することはできません。

答えて

0

これを行うには(最も効率的ではなく)最も簡単な方法は、ループを行う、その後... category__in ...

global $wp_query; 
$wp_query = new WP_Query(array("category__in"=>array(4,5,6,7,8,9,10,11))); 

を使用してカスタムクエリによってグローバル$wp_queryを交換することです...

while (have_posts()){ 
    the_post(); 

    //etc.. 
} 

これによりページングが正確になり、next_posts_link()のような高水準のテンプレート機能に頼ることができます。それが実行される前より効率的な方法は、(それが投げると$wp_queryに代わるものではありません)、元のクエリを台無しになります。おそらく...

add_action('parse_query', 'my_parse_query'); 
function my_parse_query(&$q){ 
     //decide if you want to mess with the query.... 
     //if not, return 
     $q->set_query_var("category__in", array(4,5,6,7,8,9,10,11)); 
} 

my_parse_queryを含め、すべてのクエリで呼び出されます

ページやシングルポスト用のものなので、意味があるところにcategory__inを追加するだけで、ロジックにロジックを追加する必要があります。