投稿順を直感的に操作できるための方法 ランキングに一覧も連動してくれとの要望 但しランキング選択含め2回入力

まず最初からそういう設定でなかったため
ランキングはランキングのコードを書いた
後からコードを追加したり メタキーを持たせたやり方。

【最初からランキング用のコードを全ての投稿に合わせるやり方】
これはランキングのタクソノミーを作らずに
一覧表示・分岐をすべてメタバリューにて行う方法
問題点としては一覧表示した時、同じランキングがあると複数表示される。
管理画面一覧にて順位が表示されない。
一覧で必ずランキングの順位が優先される つまりランキングの途中に他のツアーを表示できず
単調似なる可能性がある。

今回タマツアーでは後からの指示であったのと
元々メニューオーダーで順位を操作する予定だったため

メニューオーダーをやめて
あらたにソート用の数値boxを作った

0が最も前で デフォルトが100

ランキングに合わせて 123と変えていく。

方法
クイック編集にて調整したかったため今回はカスタムフィールドテンプレートをあえて使用
テンプレートタイトル:
一覧順位用 ▶  数字が小さい方が前に大きい方が後ろにきます。例)ランキングの数値に合わせる・一覧での表示で一番前にこさせたい・表示順を最後にしたいなど。
カスタムポストタイプ (カンマ区切り):
bali-tours,bali-optional-tours,bali-information

テンプレートコンテンツ:
[sort_numb]
type = text
label = 並び順
size = 3
default = 100

クイック編集時余分な所を非表示css

カスタムアドミンcss

1
2
3
.inline-edit-group #custom_field_template_select,
.inline-edit-group .button{ display:none}
#cftdiv .ui-sortable-handle{ font-weight:normal}

メインクエリにてメタバリューナンバーを使い
さらに投稿日にてソート

複数条件ソート

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
add_action( 'pre_get_posts', 'foo_modify_query_post_order' );
function foo_modify_query_post_order( $query ) {
  //管理画面スルー
if ( is_admin() || ! $query->is_main_query() )
        return;
 
//アーカイブページ数 ココ本番 ナンバー若い順 投稿新しい順
  if ( $query-> is_tax() && $query->is_main_query() ) {
$query->set('posts_per_page', 12 );
$query->set( 'meta_key', 'sort_numb' );//メタキーセット
$query -> set( 'orderby', array( 'meta_value_num' => 'ASC', 'date' => 'ASC' ) ); // 指定順を降順に
 
  }
 
}

クエリポストで表示してるやつの時

ここ

1
2
'meta_key' => 'sort_numb',
    'orderby' => array('meta_value_num' => 'ASC', 'date' => 'ASC'),

使用例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
      <?php
    $args = array(
        'posts_per_page' => 3,
        'post_type' => 'bali-tours', //カスタム投稿名
        'meta_key' => 'sort_numb',
        'orderby' => array('meta_value_num' => 'ASC', 'date' => 'ASC'),
 
     'tax_query' => array(
            'relation' => 'AND',
            array(
                'taxonomy' => 'bali-tours-cat',
                'field' => 'slug',
                'terms' => array( 'おすすめ厳選ツアー', '予備' ),
//'operator'=>'NOT IN'
                ),
),
         
);
 
    query_posts( $args );
 
if ( have_posts () ) :
    while ( have_posts() ) :
        the_post();
?>