まず最初からそういう設定でなかったため
ランキングはランキングのコードを書いた
後からコードを追加したり メタキーを持たせたやり方。
【最初からランキング用のコードを全ての投稿に合わせるやり方】
これはランキングのタクソノミーを作らずに
一覧表示・分岐をすべてメタバリューにて行う方法
問題点としては一覧表示した時、同じランキングがあると複数表示される。
管理画面一覧にて順位が表示されない。
一覧で必ずランキングの順位が優先される つまりランキングの途中に他のツアーを表示できず
単調似なる可能性がある。
今回タマツアーでは後からの指示であったのと
元々メニューオーダーで順位を操作する予定だったため
メニューオーダーをやめて
あらたにソート用の数値boxを作った
0が最も前で デフォルトが100
ランキングに合わせて 123と変えていく。
方法
クイック編集にて調整したかったため今回はカスタムフィールドテンプレートをあえて使用
テンプレートタイトル:
一覧順位用 ▶ 数字が小さい方が前に大きい方が後ろにきます。例)ランキングの数値に合わせる・一覧での表示で一番前にこさせたい・表示順を最後にしたいなど。
カスタムポストタイプ (カンマ区切り):
bali-tours,bali-optional-tours,bali-information
テンプレートコンテンツ:
[sort_numb]
type = text
label = 並び順
size = 3
default = 100
クイック編集時余分な所を非表示css
カスタムアドミンcss
.inline-edit-group #custom_field_template_select,
.inline-edit-group .button{ display:none}
#cftdiv .ui-sortable-handle{ font-weight:normal}
メインクエリにてメタバリューナンバーを使い
さらに投稿日にてソート
複数条件ソート
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' ) ); // 指定順を降順に
}
}
クエリポストで表示してるやつの時
ここ
'meta_key' => 'sort_numb',
'orderby' => array('meta_value_num' => 'ASC', 'date' => 'ASC'),
使用例
<?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();
?>