###実現したいこと
WP Query関数を使い、カスタム投稿タイプのイベント情報一覧を表示しているのですが、以下を実現したいです。
【1】イベント一覧ページでは全ての情報を表示
【2】トップページでは選択した記事のみを表示
真偽値を使って、カスタムフィールドで、✔️をはずすとトップページ非表示などできないものでしょうか?
【3】また、終了したイベントは一覧から非表示(単独の記事は残す)
以下のようにしたのですが、本日以前も表示されてしまいます。
//トップページ <?php $wp_query = new WP_Query(); $param = array( 'posts_per_page' => '24', 'post_type' => 'event', 'post_status' => 'publish', 'meta_key'=>'fi_day', //日付が入るカスタムフィールド名 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_compare' => '>=', 'meta_value'=> date("yy/mm/dd"), 'meta_type' => 'DATE' ); $wp_query->query($param); if($wp_query->have_posts()): while($wp_query->have_posts()) : $wp_query->the_post(); ?> ループ内容 <?php endwhile; endif; ?> <?php wp_reset_postdata(); ?>
お知恵をお貸し下さい。宜しくお願いいたします。
※WP Query関数では実現出来ず、get_posts関数の方で実現できるのであれば教えていただきたいです。
※カスタム投稿タイプの作成は「Custom Post Type UI」
カスタムフィールドの作成は「Advanced Custom Fields」を使用しています。
###追記(一部解決)
【2】は「Seamless Sticky Custom Post Types」プラグインで解決。
【3】については若干疑問点が残りましたが解決しました(詳しくは解答欄)。
【1】について
「カスタム投稿タイプのアーカイブ」で解決とのことですが、現状での実装方法がわかりません。
プラグイン「Event organiser」を使い、上部に特定カテゴリのみのカレンダーを表示しています。
下部にそのカテゴリーに含まれる記事一覧を表示させたいです。
functions.phpでの処理はしておらず、プラグインで用意されているカテゴリー(おそらくタクソノミー名はevent-category)と、そこで作成したカテゴリ(night)を使用。
カテゴリ別のカレンダーのショートコードを使うため固定ページのテンプレートとしています。
方法1だと記事一覧が何も表示されなくなります。
方法2だと全てのイベントが表示されてしまいます。
//カテゴリ[night]のイベントのみを表示させる <?php /* Template Name: Schedule-night */ ?> //〜headerの読み込みなど <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php the_content(); ?> //カテゴリー night のみを表示させるカレンダーを固定ページのテキストエリアにショートコードで記述。 <?php endwhile; endif; ?> <?php wp_reset_query(); ?> <?php $wp_query = new WP_Query(); $param = array( 'tax_query' => array( 'taxonomy' => 'event-category', 'field' => 'slug', 'terms' => 'night' ),//方法1 'category_name' => 'night',//方法2 'posts_per_page' => '30', 'post_type' => 'event', 'post_status' => 'publish', 'meta_key'=>'fi_day',//日付が入るカスタムフィールド名 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_compare' => '>=', 'meta_value'=> date("Y-m-dd"), 'meta_type' => 'DATE' ); $wp_query->query($param); if($wp_query->have_posts()): while($wp_query->have_posts()) : $wp_query->the_post(); ?> //ループさせる内容 <?php endwhile; endif; ?> <?php wp_reset_postdata(); ?>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/02 10:43 編集
2016/05/02 14:52
2016/05/03 16:55