array_multisort で お客様の声 やクライアントの事例を並び替えた。配列の並び替え

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