まず過去記事array_multisortでけんさくすれば色々出てくる。
まとめ
お客様の声 koe_roop_d
<?php $args = array( 'posts_per_page' => -1, 'post_type' => array('jirei','d_jirei'), // カスタム投稿タイプ名 'tax_query' => array( array( 'taxonomy' => 'client', // カスタムタクソノミー名 'field' => 'term_id', // ターム名を term_id,slug,name のどれで指定するか 'terms' => get_field('client_tax'), // タクソノミーに属するターム名 ) ) ); $myposts = get_posts( $args ); $ar1 = array(); $ar2 = array(); foreach($myposts as $key): $ar1[] = $key -> post_type; $ar2[] = $key -> post_date; // $amounts2[] = $key -> term_order; // $amounts[] = $key['name']; endforeach; // echo "<pre>"; // print_r($ar2) ; // echo "</pre>"; array_multisort($ar1,SORT_DESC, SORT_STRING,$ar2, SORT_DESC, SORT_STRING,$myposts); if(! $myposts){ } foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
と続く並び替え用の配列と 並び替えの配列数は同じでなければならない。
感覚的には、配列1が 1,0,1,0 だとして、それを基準に並び替える場合
配列2の該当場所が並び替わるという感じ
つまり配列2が さる,うま,ひつじ,とり だとすると
ASCで並び替えると 0,0,1,1となるので
さる,ひつじ,うま,とり という感じ。
今回はポストタイプ別にHP制作事例を表示し、その後デザイン事例、 登録新しい順ということ、。
日付のデータは数字だが、多分同じ日付だと 時間の前に スペースがあるので 数として同じに扱われているようで、 あえて 数字 スターリングにした。
上記は、mypostをならびかえたが、
下記はタクソノミーで$postsを並び替えた。
<div class="jirei_box_all <?php if(is_tax('client')): //クライアンとなら ?> client_all <?php endif; ?>"> <!--★★★ループ基本--> <?php // echo "<pre>"; // print_r($posts) ; // echo "</pre>"; $ar1 = array(); $ar2 = array(); foreach($posts as $key): $ar1[] = $key -> post_type; $ar2[] = $key -> post_date; // $amounts2[] = $key -> term_order; // $amounts[] = $key['name']; endforeach; array_multisort($ar1,SORT_DESC, SORT_STRING,$ar2, SORT_DESC, SORT_STRING,$posts); if ( have_posts () ) : while ( have_posts() ) : the_post(); ?> <?php $post_type = $post -> post_type;
と続く
タームアーカイブページでは
$posts ととればよかったが $postと取ると、配列のしまい方が違ったので注意