newのカスタムフィールド
と
release_dateのカスタムフィールド
の両方でソートする場合の例です。
テーマ内のfunction.phpに追記します。
※パスの例
wordpress/wp-content/themes/twentythirteen/functions.php
1、sqlにjoinを追加する関数を作成
function custom_posts_join( $join, $query ) { global $wpdb; $join .= " INNER JOIN $wpdb->postmeta AS m1 ON m1.post_id = $wpdb->posts.ID AND m1.meta_key = 'new'"; $join .= " INNER JOIN $wpdb->postmeta AS m2 ON m2.post_id = $wpdb->posts.ID AND m2.meta_key = 'release_date'"; return $join; }
2、sqlにorderbyを追加する関数を作成
function custom_posts_orderby( $orderby, $query ) { $orderby = 'm1.meta_value DESC, m2.meta_value DESC'; return $orderby; }
3、query_postsの前に1,2で作成した関数を実行
add_filter( 'posts_join', 'custom_posts_join', 10, 2 ); add_filter( 'posts_orderby','custom_posts_orderby', 10, 2 ); query_posts($args);
4、ループで出力が完了したら、3を削除してあげます。
while (have_posts()) : the_post(); : : endwhile; remove_filter( 'posts_join', 'custom_posts_join', 10, 2 ); remove_filter( 'posts_orderby','custom_posts_orderby', 10, 2 );
”ITと英語を学べる留学”グローバルITアカデミーはこんな事も勉強できる、グローバル人材育成機関です。