ID, ‘bali-tours-ranking’);
foreach ( $terms as $term ) {
}
$cat_id = $term->term_id;
$post_id = ‘bali-tours-ranking_’.$cat_id;
$rank_v = get_field(‘rank_value’,$post_id);
echo $rank_v;
?>
ID, ‘bali-tours-ranking’);
foreach ( $terms as $term ) {
}
$cat_id = $term->term_id;
$post_id = ‘bali-tours-ranking_’.$cat_id;
$rank_v = get_field(‘rank_value’,$post_id);
echo $rank_v;
?>
まず最初からそういう設定でなかったため
ランキングはランキングのコードを書いた
後からコードを追加したり メタキーを持たせたやり方。
【最初からランキング用のコードを全ての投稿に合わせるやり方】
これはランキングのタクソノミーを作らずに
一覧表示・分岐をすべてメタバリューにて行う方法
問題点としては一覧表示した時、同じランキングがあると複数表示される。
管理画面一覧にて順位が表示されない。
一覧で必ずランキングの順位が優先される つまりランキングの途中に他のツアーを表示できず
単調似なる可能性がある。
今回タマツアーでは後からの指示であったのと
元々メニューオーダーで順位を操作する予定だったため
メニューオーダーをやめて
あらたにソート用の数値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(); ?>