ここではsession_startに格納されているY-m-d H:i:s形式の日付と比較しています。
query_posts
を使うとサイトが遅くなるので使ってはいけません。
pre_get_posts
を使用することでloopを回す前にqueryに変更をかけることができます。
queryでのカスタムフィールドの扱いはWP_queryに詳しく記載があります。
//shortycolossus//////////////////////////////// // sessiontypeかsessionplaceのtaxonomy archiveページでは // 項目の表示順をsession_startの降順にして、 // イベントの日付が過去の場合は表示しないようにする //////////////////////////////////////////////// function session_archive_filter_order( $query ) { if ( is_admin() || ! $query->is_main_query() ) { return; } if ( $query->is_tax(array('sessiontype','sessionplace')) && $query->is_archive() ) { $query->set( 'meta_key', 'session_start'); $query->set( 'meta_value', date('Y-m-d 0:0:0') ); $query->set( 'meta_compare', '>=' ); $query->set( 'order', 'DESC' ); $query->set( 'orderby', 'meta_value' ); $query->set( 'meta_key', 'session_start' ); } } add_action( 'pre_get_posts', 'session_archive_filter_order' );