質問編集履歴

3 問題点がわかりやすいよう番号をふりました。【1】の問題について追記しました。

bpbjsu

bpbjsu score 24

2016/05/02 20:42  投稿

WordPressで、選択した記事(イベント)だけトップに表示させたい/終了したイベントは非表示にしたい。
###実現したいこと
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」を使用しています。
カスタムフィールドの作成は「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(); ?>
```
  • PHP

    38028 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    15455 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

2 注釈追加

bpbjsu

bpbjsu score 24

2016/04/29 10:22  投稿

WordPressで、選択した記事(イベント)だけトップに表示させたい/終了したイベントは非表示にしたい。
###実現したいこと
WP Query関数を使い、カスタム投稿タイプのイベント情報一覧を表示しているのですが、以下を実現したいです。
-イベント一覧ページでは全ての情報を表示
-トップページでは選択した記事のみを表示
真偽値を使って、カスタムフィールドで、✔️をはずすとトップページ非表示などできないものでしょうか?
-また、終了したイベントは一覧から非表示(単独の記事は残す)
以下のようにしたのですが、本日以前も表示されてしまいます。
```
//トップページ  
<?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」を使用しています。
  • PHP

    38028 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    15455 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

1 伝わりにくい文言を修正

bpbjsu

bpbjsu score 24

2016/04/29 10:20  投稿

WordPressで、選択した記事(イベント)だけトップに表示させたい/終了したイベントは非表示にしたい。
###実現したいこと
WP Query関数を使い、カスタム投稿タイプのイベント情報一覧を表示しているのですが、以下を実現したいです。
-イベント一覧ページでは全ての情報を表示
-トップページでは選択した記事のみを表示
真偽値を使って、カスタムフィールドで、✔️をはずすとトップページ非表示などできないものでしょうか?
また、以下のようにしたのですが、本日以前も表示されてしまいます。
-また、終了したイベントは一覧から非表示(単独の記事は残す)
-終了したイベントは一覧から非表示(単独の記事は残す)
お知恵をお貸し下さい。宜しくお願いいたします。
※WP Query関数では実現出来ず、get_posts関数の方で実現できるのであれば教えていただきたいです。
※カスタム投稿タイプの作成は「Custom Post Type UI」
カスタムフィールドの作成は「Advanced Custom Fields」を使用しています。
以下のようにしたのですが、本日以前も表示されてしまいます。
```
<?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」を使用しています。
  • PHP

    38028 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    15455 questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る