回答編集履歴

5

補足

2016/05/03 12:51

投稿

flat
flat

スコア617

test CHANGED
@@ -89,3 +89,55 @@
89
89
  独自のテンプレートにしたい場合はファイル名を**archive-event.php**として作成して下さい。
90
90
 
91
91
  こちらも投稿の一覧を表示させるループは通常の書き方で大丈夫です。
92
+
93
+
94
+
95
+ ---
96
+
97
+
98
+
99
+ **補足**
100
+
101
+
102
+
103
+ WordPress(PHP)に限った話ではないですが「取得する情報の内容」を確認する癖を付けておくと良いです。
104
+
105
+ ```PHP
106
+
107
+ // ACFのデイトピッカーで設定したカスタムフィールドの日付を取得 yymmdd
108
+
109
+ $field_date = get_field( 'fi_day' );
110
+
111
+
112
+
113
+ // 書式化したローカルの日付を取得 Ymd
114
+
115
+ $local_date = date( 'Ymd' );
116
+
117
+
118
+
119
+ // WordPressで設定した日付のフォーマットで投稿の日付を取得
120
+
121
+ $wp_date = get_the_date();
122
+
123
+
124
+
125
+ // 指定したフォーマットで投稿の日付を取得 Ymd
126
+
127
+ $wp_date_new = get_the_date( 'Ymd' );
128
+
129
+
130
+
131
+ echo '<pre>';
132
+
133
+ var_dump( $field_date );
134
+
135
+ var_dump( $local_date );
136
+
137
+ var_dump( $wp_date );
138
+
139
+ var_dump( $wp_date_new );
140
+
141
+ echo '</pre>';
142
+
143
+ ```

4

脱字追加

2016/05/03 12:50

投稿

flat
flat

スコア617

test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  `date()`による書式化した日付の指定の仕方とACFの設定する日付の指定の仕方はフォーマットが異なります。
44
44
 
45
- 「**フォーマットを保存する**」という項目ではデフォルトの`yymmdd`とし、「**表示フォーマット**」という項目では日付を認識しやすいように`yy/mm/dd`としてください。
45
+ ACFで設定する「**フォーマットを保存する**」という項目ではデフォルトの`yymmdd`とし、「**表示フォーマット**」という項目では日付を認識しやすいように`yy/mm/dd`としてください。
46
46
 
47
47
  これはそのまま`echo`などで出力すると`20160502`のような日付の形式になるので`2016/05/02`という形式で表示させたい時は次のようにして下さい。
48
48
 

3

修正

2016/05/02 15:14

投稿

flat
flat

スコア617

test CHANGED
@@ -34,11 +34,13 @@
34
34
 
35
35
 
36
36
 
37
- **追記**
37
+ **追記**(一部訂正)
38
38
 
39
39
 
40
40
 
41
+ ACFで指定する日付と`date_query`で指定する日付を混同しています。(私も混同しました)
42
+
41
- すみません、`date("yy/mm/dd")`をそのまま`echo`すと`1616/0404/2929`となるので勘違いていましが、日付のフォーマットは`yymmdd`で良いみたいです。
43
+ `date()`によ書式化した日付の指定の仕方とACFの設定する日付の指定の仕方はフォーマットが異なります。
42
44
 
43
45
  「**フォーマットを保存する**」という項目ではデフォルトの`yymmdd`とし、「**表示フォーマット**」という項目では日付を認識しやすいように`yy/mm/dd`としてください。
44
46
 

2

コードの一部を修正

2016/05/02 15:13

投稿

flat
flat

スコア617

test CHANGED
@@ -52,7 +52,17 @@
52
52
 
53
53
  // 日付の形式を変換
54
54
 
55
+ if ( !empty($field_date) ) {
56
+
55
- $view_date = date( 'Y/m/d', strtotime( $field_date ) );
57
+ $view_date = date( 'Y/m/d', strtotime( $field_date ) );
58
+
59
+ } else {
60
+
61
+ // 日付のフィールドが取得出来なかった時の表示
62
+
63
+ $view_date = 'date not found.';
64
+
65
+ }
56
66
 
57
67
  // 表示
58
68
 

1

追記

2016/05/02 14:52

投稿

flat
flat

スコア617

test CHANGED
@@ -27,3 +27,53 @@
27
27
  `date("yy/mm/dd")`という箇所を`date("y/m/d")`などの`meta_value`と同じ適切な形式に修正してください。
28
28
 
29
29
  現状では、例えば本日2016年4月29日の日付を`date("yy/mm/dd")`で取得すると`1616/0404/2929`となってしまいます。
30
+
31
+
32
+
33
+ ---
34
+
35
+
36
+
37
+ **追記**
38
+
39
+
40
+
41
+ すみません、`date("yy/mm/dd")`をそのまま`echo`すると`1616/0404/2929`となるので勘違いしていましたが、日付のフォーマットは`yymmdd`で良いみたいです。
42
+
43
+ 「**フォーマットを保存する**」という項目ではデフォルトの`yymmdd`とし、「**表示フォーマット**」という項目では日付を認識しやすいように`yy/mm/dd`としてください。
44
+
45
+ これはそのまま`echo`などで出力すると`20160502`のような日付の形式になるので`2016/05/02`という形式で表示させたい時は次のようにして下さい。
46
+
47
+ ```PHP
48
+
49
+ // 日付のフィールドを取得
50
+
51
+ $field_date = get_field( 'fi_day' );
52
+
53
+ // 日付の形式を変換
54
+
55
+ $view_date = date( 'Y/m/d', strtotime( $field_date ) );
56
+
57
+ // 表示
58
+
59
+ echo $view_date;
60
+
61
+ ```
62
+
63
+ また、これに合わせて`meta_value`で指定していた日付は`'meta_value' => date( 'Ymd' )`として下さい。
64
+
65
+ カスタムタクソノミーについては`tax_query`を利用した方が柔軟に対応できると思います。
66
+
67
+ なお、`tax_query`に渡すカスタムタクソノミーは正確に指定しなければ有効にならないので、よく確認して指定して下さい。
68
+
69
+
70
+
71
+ そしてカスタム投稿タイプのアーカイブについてですが、これはカスタム投稿タイプで`has_archive`というパラメータが`true`になっていれば、特に何もしなくとも、そのカスタム投稿タイプのアーカイブのURL(`domain.com/event/`など)にアクセスすることでそのまま通常のループ中にすべて表示されます。
72
+
73
+ カスタムタクソノミーはプラグインが用意したものということなので、アーカイブページにアクセス出来なければおそらく`has_archive`が有効になっていません。
74
+
75
+ また、アーカイブページへのアクセスを確認するときは、念の為にパーマリンク設定を更新してからアクセスしてください。
76
+
77
+ 独自のテンプレートにしたい場合はファイル名を**archive-event.php**として作成して下さい。
78
+
79
+ こちらも投稿の一覧を表示させるループは通常の書き方で大丈夫です。