web-dev-qa-db-ja.com

クエリの実行後に投稿の順序を逆にする

カスタム投稿タイプ 'show'の最後の5件の投稿を表示しています。

これは私に最初に最新の投稿をします。

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

私が必要としているのは、実際に最も早い(最新のショーの配列の)最初に、そして(最新のショーの配列の中の)最新のショーを最後にすることです。

私は現在手に入れています(カスタムフィールドのメタ値による表示日):

3/11/12、3/7/12、3/4/12、3/2/12、2/30/12など.

2/30/12、3/1/2、3/4/12、3/7/12、3/11/12、

私はphpのarray_reverseをそのように使ってみました(上記のコードに追加されました):

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

これは私に非常に奇妙な結果を与えました(ポストの完全に異なる部分を表示しました、配列順はオフでした)。

何か案は?

5
Squadrons

私は私が間違っていたことを考え出しました。簡単な初心者の間違い。

Array_reverseは適切に機能していましたが、その後、反転した配列を$ home_shows WP_Queryに再割り当てしていなかったため、変更はありません。

これが答えです、そして私の改訂されたコードです。

<?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(); ?>

返事をありがとう、私がこれを考え出してくれてうれしい。

7
Squadrons

カスタムフィールドの混乱をすべて取り除き、args配列に'order' => 'ASC'を追加します。そしてこれで終わりです!

1
    <?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>";
  ?>

カスタム投稿タイプで上記を試しました...

結果投稿ID:240、239、238、237逆:237、238、239、240

あなたの最後に何か問題があるはずです......

0
Rajeev Vyas