3

Wordpressテーマで、カテゴリアーカイブに表示している投稿をランダム化できません[CMSとして使用しています]。ホームページは正常にランダム化されており、WP_queryを正しく変更していると思います。以下は正確なargs配列です。

array(4) { ["orderby"]=> string(4) "rand" ["order"]=> string(3) "ASC" ["posts_per_page"]=> string(2) "-1" ["category_name"]=> string(8) "branding" }

読みやすくするために、次のようになります。

orderby => rand
order => ASC
posts_per_page => -1
category_name => branding (or whatever the query_string brings in)

カテゴリからすべての投稿を取得しましたが、投稿日順になっています。

手がかりはありますか?または、have_postsでWP_queryの結果をシャッフルするための代替方法はありますか?

ありがとう。

************EDIT************

申し訳ありませんが、上記のargs配列についてもっと明確にすべきでした。これはクエリ配列のvar_dumpであり、クエリに追加する引数ではありません。

    $args = array(
        'orderby'        => 'rand',
        'order'      => 'ASC',
        'posts_per_page' => '-1',
    );
    global $wp_query;           
    remove_all_filters('posts_orderby');
    $theq = array_merge($args, $wp_query->query);
    query_posts($theq);

Sheikh Heeraの提案に従ってremove_all_filtersを追加しましたが、違いはありません。

4

3 に答える 3

3

その場合は、新しいクエリを作成する方がよい場合があります。これは、category.php や taxonomy-yourcustomtaxonomy.php などの分類テンプレートでのみ使用する必要があります。

global $wp_query;

$term = $wp_query->queried_object;

$args=array(
    'orderby' => 'rand',
    'posts_per_page' => -1,
    'post_type' => 'post',
    'tax_query' => array(
            array(
                'taxonomy'  => $term->taxonomy,
                'field'     => 'slug',
                'terms'     => $term->slug,
                )
            )
    );

$new_query = null;
$new_query = new WP_Query($args);

while ($new_query->have_posts()) : $new_query->the_post(); ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <h2 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <div class="entry-meta"><?php // Meta ?></div><!-- .entry-meta -->
        <div class="entry-content"><?php the_content(); ?></div>
    </div>
<?php
endwhile;
wp_reset_postdata();
于 2012-06-08T11:03:16.060 に答える
2

別のプラグインが問題を引き起こしている可能性がありますが、次のようにすることができます

remove_all_filters('posts_orderby');
$args=array(
    orderby => 'rand'
    order => 'ASC'
    posts_per_page => -1
    category_name => 'branding'
);
query_posts($args);

ただし、このソリューションを使用してプラグインの機能を破壊することはできますが、問題の解決には役立つ可能性がありますが、完全ではない可能性があることを忘れないでください。

于 2012-06-06T18:36:00.070 に答える
0

元のクエリとマージしたいと思います。その場合、カテゴリを指定する必要はなく、この方法でカスタム分類法を使用している場合にも機能します。

$args = array(
    'posts_per_page' => -1,
    'orderby' => 'rand'
    );

query_posts( array_merge( $wp_query->query, $args) ); 
于 2012-06-06T20:02:35.043 に答える