web-dev-qa-db-fra.com

get_post random et order en ne travaillant pas

J'ai ce code qui renvoie la liste des titres d'articles sous forme de liens, mais lorsque j'ajoute les paramètres "orderby" et "order", les résultats sont renvoyés mais "orderby, order, Rand" ne fonctionne pas, quelqu'un peut-il me dire ce que je suis faire le mal? Merci!

<ul>
   <?php $post; $cat_posts = get_posts(array('numberposts' => 10, 'orderby' => 'Rand', 'order' => ASC, 'category' => $disciplineCatID));
   foreach($cat_posts as $post) : ?>
   <?php $postTitle = get_the_title(); if($title != $postTitle) :?>
   <li><a href="<?php the_permalink(); ?>">&rsaquo;&rsaquo; <?php the_title(); ?></a></li>
   <?php endif ;?>
   <?php endforeach; ?>
</ul>
3
user3907

Oui, c'est la syntaxe correcte:

$args = array(
    'orderby' => 'Rand',
    'order'    => 'ASC'
);
query_posts( $args );

Cependant, les plugins peuvent empêcher cela de fonctionner correctement. Essayez de désactiverALLplugins et voyez si cela vous aide. Deux plugins connus qui empêchent orderby=Rand de fonctionner sont Post Type Order et WP_Sticky

En outre, si vous avez installé la commande Postes, assurez-vous de visiter la page Admin et de vérifier les paramètres. Vous pouvez utiliser ce plugin et l'empêcher de réorganiser automatiquement les publications:

http://img829.imageshack.us/img829/2616/pictureot.png

Et ensuite, vous pouvez utiliser le code de type de poste commandé pour commander spécifiquement ces articles dans les endroits où vous souhaitez qu'ils soient commandés via la commande custom/menu-order. Voici l'exemple de code pour ce plugin:

Le code PHP suivant renverra toujours la publication dans l'ordre de configuration:

$args = array(
'post_type' => 'feature'
);

$my_query = new WP_Query($args);
while ($my_query->have_posts())
{
$my_query->the_post();
(..your code..)          
}

Ou:

$posts = get_posts($args);
foreach ($posts as $post)
{
(..your code..)     
}

Si la case de tri automatique est désactivée, vous devrez utiliser les paramètres "orderby" et "order":

$args = array(
'post_type' => 'feature',
'orderby'   => 'menu_order',
'order'     => 'ASC'
);
12
cwd

Pourquoi n'essayez-vous pas d'utiliser query_posts à la place?

Quelque chose comme:

$args = array(
    'orderby' => 'Rand',
    'order'    => 'ASC'
);
query_posts( $args );
1
dani

essayez ce code

<?php 
   remove_all_filters('posts_orderby');
   query_posts('orderby=Rand'); 
?>

a la réponse d'ici

http://www.reinaris.nl/wp/wordpress-random-post-order-not-working-orderbyrand/

0
jlapitan

Vous avez probablement oublié de setup_postdata dans votre boucle foreach pour que les balises de gabarit fonctionnent.

0
kovshenin

J'ai rencontré le même problème et, heureusement, j'ai trouvé ce fil. J'ai essayé une solution différente, probablement plus sale que les autres, mais peut-être utile dans certains cas.

Fondamentalement, je ai mélangé les messages avant de les sortir:

<?php 
    $selectedPosts = get_posts($args);
    shuffle($selectedPosts);

    foreach ($selectedPosts as $selectedPost) : 
    setup_postdata( $selectedPost );
?>

<!-- post elements here -->

<?php 
    endforeach;
    wp_reset_postdata();
?>
0
ruggerocastagnola