web-dev-qa-db-fra.com

Inverser l'ordre des publications APRES que la requête soit effectuée

Je suis en train d'afficher les 5 derniers messages d'un type de message personnalisé "show".

Cela me donne d'abord le dernier message.

<?php
$args = array(
    'post_type' => 'show',
    'posts_per_page' => 5,
    'order' => 'DESC'
    );
$home_shows = new WP_Query($args);
var_dump($home_shows);
?>

Ce dont j'ai besoin, c’est d’avoir le premier (du tableau des dernières émissions) en premier, et le dernier (en dernier lieu).

Je suis actuellement en train de recevoir (la date du spectacle via une méta valeur de champ personnalisé):

3/11/12, 3/7/12, 3/4/12, 3/2/12, 2/30/12 etc.

J'ai besoin de: 2/30/12, 3/1/12, 3/4/12, 3/7/12, 3/11/12,

J'ai essayé d'utiliser php's array_reverse comme suit (ajouté au code ci-dessus):

$reversed_shows = array_reverse( $home_shows->posts );

Ce qui m'a donné des résultats vraiment bizarres (affiche des parties complètement différentes du message, l'ordre du tableau était désactivé).

Des idées?

5
Squadrons

J'ai compris ce que je faisais mal. Une simple erreur de débutant.

Array_reverse fonctionnait correctement, mais je ne réaffectais pas le tableau inversé vers le WP_Query $ home_shows, je ne voyais donc aucun changement.

Voici la réponse et mon code révisé.

<?php
                    $args = array(
                        'post_type' => 'show',
                        'posts_per_page' => 5,
                        'order' => 'DESC',
                    );
                    $home_shows = new WP_Query($args);
                    //reverse the order of the posts, latest last
                    $array_rev = array_reverse($home_shows->posts);
                    //reassign the reversed posts array to the $home_shows object
                    $home_shows->posts = $array_rev;
                ?>
                <?php $captions = array(); ?>
                <?php if ( $home_shows->have_posts() ) : ?>         
                    <?php while ( $home_shows->have_posts() ) : $home_shows->the_post(); ?>

Merci pour les réponses, content d'avoir compris celui-ci.

7
Squadrons

Supprimez tout le désordre du champ personnalisé et ajoutez un 'order' => 'ASC' au tableau args! Et tu as fini!

1
Rutwick Gangurde
    <?php
    $args = array(
        'post_type' => 'show',
        'posts_per_page' => 5,
        'order' => 'desc'
        );
    $home_shows = new WP_Query($args);
 //   var_dump($home_shows);

echo "<pre>";
print_r($home_shows->posts);
echo "</pre>";



$array_rev = array_reverse($home_shows->posts);
echo "<pre>";
print_r($array_rev);
echo "</pre>";
  ?>

J'ai essayé ci-dessus pour mon type de message personnalisé ...

résultats post ids: 240,239,238,237 pour reverse: 237,238,239,240

Il doit y avoir quelque chose d'autre en proble à votre fin ......

0
Rajeev Vyas