[WordPress] query_posts で日付順のカテゴリを除外する場合

スポンサーリンク

Question

カテゴリを除外し、結果を維持しながら query_posts と日付クエリ パラメーターと日付で、結果の順序で取得したいです。

global $query_string;
query_posts( $query_string . ‘&orderby=date&order=ASC&cat=-1′ );

結果は正しいですが (ASC および DESC) で日付の順序がうまくいきません。

global $query_string;
query_posts( $query_string . ‘&orderby=date&order=ASC’ );

結果を取得することがなく、カテゴリを除くだけ正常に動作します:

global $query_string;
query_posts( $query_string . ‘&cat=-1 );

も特定のカテゴリを含む、結果の順序付けが正常に動作します:

global $query_string;
query_posts( $query_string . ‘&orderby=date&order=ASC&cat=2′ );

もちろん最初に、右側のカテゴリの配列を構築することにより回避することができます。私は、query_posts に次のようにこれらのカテゴリを使用しています。

$include = array();

$categories = get_categories( array(‘exclude’ => 1) );

foreach ( $categories as $category ) {
$include[] = $category->term_id;
}

私は query_posts を使用するときにカテゴリを除外し、日付順の組み合わせが動作しない理由を把握できません。

バージョン 3.9.1 とワードプレスの 4.0.1をテストし、両方とも同じ結果がでました。

これワードプレスのバグですか?、私のコードの問題ですか?

WP_Query 例

$args = array(
‘category__not_in’ => array(1),
‘post_type’ => ‘post’,
‘orderby’ => ‘date’,
‘order’ => ‘ASC’,
);

// The Query
$query = new WP_Query( $args );

pre_get_posts 例

function exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( ‘orderby’, ‘date’ );
$query->set( ‘order’, ‘ASC’ );
$query->set( ‘cat’, ‘-1′ );
}
}
add_action( ‘pre_get_posts’, ‘exclude_category’ );

カテゴリが除外されるまでは、すべて正常に動作します。

答え

新しい WP_Query

query_posts()

を使用せずに宣言することを試してみてください。

http://stackoverflow.com/questions/27504397/wordpress-query-posts-order-by-date-when-excluding-a-category

スポンサーリンク

Leave a Reply