まず過去記事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と取ると、配列のしまい方が違ったので注意