Ich kann mein WordPress-Design nicht dazu bringen, die Beiträge, die ich in den Kategoriearchiven anzeige, zufällig anzuordnen [I’m using it as a CMS]. Die Homepage randomisiert normal, und das bin ich [I think] Korrekte Änderung der WP_query. Unten ist das genaue args-Array:
array(4) { ["orderby"]=> string(4) "rand" ["order"]=> string(3) "ASC" ["posts_per_page"]=> string(2) "-1" ["category_name"]=> string(8) "branding" }
Zum leichteren Lesen ist es:
orderby => rand
order => ASC
posts_per_page => -1
category_name => branding (or whatever the query_string brings in)
Ich bekomme alle Posts aus der Kategorie, aber sie sind in der Reihenfolge des Post-Datums.
Irgendwelche Hinweise? oder alternative Methoden zum Mischen des Ergebnisses meiner WP_query in den have_posts?
Vielen Dank.
************EDIT************
Entschuldigung, ich hätte das args-Array oben deutlicher machen sollen. Es ist ein var_dump des Abfragearrays, nicht meine Argumente, die ich der Abfrage hinzufüge.
$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);
Ich habe die remove_all_filters gemäß dem Vorschlag von Sheikh Heera hinzugefügt, aber es hat keinen Unterschied gemacht.
Vielleicht ist es dann besser, eine neue Abfrage zu erstellen. Dies sollte jedoch nur in einer Taxonomievorlage wie category.php oder taxonomy-yourcustomtaxonomy.php verwendet werden.
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="https://stackoverflow.com/questions/10918814/<?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();
Es könnte ein anderes Plugin sein, das das Problem verursacht, aber Sie können wie folgt vorgehen
remove_all_filters('posts_orderby');
$args=array(
orderby => 'rand'
order => 'ASC'
posts_per_page => -1
category_name => 'branding'
);
query_posts($args);
Aber denken Sie daran, dass Sie mit dieser Lösung die Funktionalität eines Plugins zerstören können, aber es könnte nützlich sein, das Problem zu lösen, aber möglicherweise nicht perfekt.
Ich denke, Sie möchten es mit der ursprünglichen Abfrage zusammenführen. Die Kategorie muss dann nicht angegeben werden und funktioniert auch auf diese Weise, wenn eine benutzerdefinierte Taxonomie verwendet wird.
$args = array(
'posts_per_page' => -1,
'orderby' => 'rand'
);
query_posts( array_merge( $wp_query->query, $args) );