teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

11

コードに追記場所記載

2020/01/26 06:03

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
@@ -112,6 +112,7 @@
112
112
  'compare' => 'LIKE'
113
113
  ),
114
114
  );
115
+ //ここから追記しました
115
116
       $tax_query = array(
116
117
    array(
117
118
    'taxonomy' => 'course_menu',
@@ -119,14 +120,13 @@
119
120
   'terms' => array( $taxonomy->slug[ここが効いていない?] ),
120
121
  ),
121
122
  );
122
-
123
+ //ここまで
123
124
  $query->set( 'meta_query' , $meta_query );
124
125
  $query->set( 'year' , '' );
125
126
  $query->set( 'start_date' , '' );
126
127
  $query->set( 'meta_key' , '' );
127
128
  $query->set( 'post_type' , 'course');
128
-      $query->set( 'tax_query' , $tax_query);
129
+      $query->set( 'tax_query' , $tax_query);//追記
129
-
130
130
  }
131
131
  }
132
132
  ```

10

現状の状態にソースを修正しました。

2020/01/26 06:03

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
@@ -4,9 +4,6 @@
4
4
  さらにカスタム投稿タイプでの一覧にしたかったので、下記のとおりに追加しました。
5
5
  [https://www.p-nt.com/technicblog/archives/92](https://www.p-nt.com/technicblog/archives/92)
6
6
 
7
- ですがやりたい事はさらにカスタムタクソノミーでの一覧なのです。
8
- 上記のurlのように何かをfunctions.phpに付け足すのだろうと調べているのですが、いまだに未解決じまいです。。何かヒントをいただけないでしょうか?
9
-
10
7
  【前提条件】
11
8
  カスタム投稿タイプ :course
12
9
  カスタムタクソノミー :course_menu
@@ -14,22 +11,16 @@
14
11
  現在アーカイブとしてリンクされてるurl :[homeURL]/course/date/[yyyy]/?meta_key=start_date
15
12
  使用しているテンプレートはarchive-course.php
16
13
 
17
- 【やりたい事】
18
- カスタムフィールドのstart_dateの日付でカスムタクソノミーcourse_menu年別アーカイブを作りたい。
14
+ やりたい事はさらにカスタムタクソノミー一覧で
19
-
20
- この場合のurlは
21
15
  [homeURL]/course/course_menu/date/[yyyy]/?meta_key=start_date
16
+ のような形にできないものか?と考えております。
17
+ もしくは現状の
18
+ [homeURL]/course/date/[yyyy]/?meta_key=start_date
19
+ のままでも良いのですが、タクソノミーで分類できていないので、該当画面にいくと全てのタームの一覧となってしまっています。
22
20
 
23
- になるのかなと思いますが、どのように記述をしたら良いのかわかりません。
24
-
25
- 参考サイトにカスタム投稿タイプを指定するまで
26
- ([homeURL]/course/date/[yyyy]/?meta_key=start_dateにするまで)
27
- はできたのですが、ここにどのようにカスタムタクソノミーの設定すればよいのでしょうか?
28
-
29
-
30
21
  以下、現在のソースです。
31
22
  ```
32
- //archive-course.php
23
+ //archive-course.phpで年別アーカイブへ飛ぶリンク部分
33
24
  <ul class="yearly-list">
34
25
  <?php
35
26
  $taxonomy = $wp_query->get_queried_object();
@@ -40,7 +31,6 @@
40
31
  ?>
41
32
  </ul>
42
33
  ```
43
- ↑ここにカスタムタクソノミーの設定も入れたいのです。
44
34
 
45
35
  ```
46
36
  //functions.php
@@ -114,6 +104,7 @@
114
104
  add_action( 'pre_get_posts', 'my_pre_get_posts' );
115
105
  function my_pre_get_posts( $query ) {
116
106
  if ( $query->is_year ) {
107
+        $taxonomy = get_queried_object();[ここが効いていない?]
117
108
  $meta_query = array(
118
109
  array(
119
110
  'key' => $query->get( 'meta_key' ),
@@ -121,36 +112,11 @@
121
112
  'compare' => 'LIKE'
122
113
  ),
123
114
  );
124
-
125
- $query->set( 'meta_query' , $meta_query );
126
- $query->set( 'year' , '' );
127
- $query->set( 'start_date' , '' );
128
- $query->set( 'meta_key' , '' );
129
- $query->set( 'post_type' , 'course');
130
- }
131
- }
132
- ```
133
- 【今すすんでるところまで】
134
- 上記に$tax_queryを追加しました。しかしtermの取得がうまくできず。苦しんでいます。
135
- ちなみに'terms'の中を普通に一つ実際にあるタームスラッグ名を入れると機能していました。
136
-
137
- ```ここに言語を入力
138
- add_action( 'pre_get_posts', 'my_pre_get_posts' );
139
- function my_pre_get_posts( $query ) {
140
- if ( $query->is_year ) {
141
- $taxonomy = get_queried_object();[ここが効かない]
142
- $meta_query = array(
115
+      $tax_query = array(
143
- array(
116
+   array(
144
- 'key' => $query->get( 'meta_key' ),
145
- 'value' => $query->get( 'year'),
146
- 'compare' => 'LIKE'
147
- ),
148
- );
149
- $tax_query = array(
150
- array(
151
- 'taxonomy' => 'course_menu',
117
+   'taxonomy' => 'course_menu',
152
- 'field' => 'slug',
118
+   'field' => 'slug',
153
- 'terms' => array( $taxonomy->slug[ここをどうしていいかわからない] ),
119
+  'terms' => array( $taxonomy->slug[ここが効いていない] ),
154
120
  ),
155
121
  );
156
122
 
@@ -159,8 +125,11 @@
159
125
  $query->set( 'start_date' , '' );
160
126
  $query->set( 'meta_key' , '' );
161
127
  $query->set( 'post_type' , 'course');
162
- $query->set( 'tax_query' , $tax_query);
128
+      $query->set( 'tax_query' , $tax_query);
129
+
163
130
  }
164
131
  }
132
+ ```
133
+ SQLのソースのような部分は、知識が足りず、一回あきらめ、アドバイスいただき上記のようにtax-queryで試みたのですが、ターム一覧のようにはなりませんでした。
165
134
 
166
- ```
135
+ 色々トライしたのですが、どうしてもうまくいかず。。なにか手がかりを探しています。

9

現状の状態を追加しました。

2020/01/26 05:38

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
@@ -130,12 +130,37 @@
130
130
  }
131
131
  }
132
132
  ```
133
- カスタム投稿タイプを付け足した
133
+ 【今すすんでるところまで】
134
- ```
134
+ 上記に$tax_queryを追加しました。しかしtermの取得がうまくできず。苦しんでいます。
135
- $where = "WHERE p.post_type = 'course' AND p.post_status = 'publish'";
135
+ ちなみに'terms'の中を普通に一つ実際にあるタームスラッグ名を入れると機能していました。
136
- ```
136
+
137
-
138
137
  ```ここに言語を入力
138
+ add_action( 'pre_get_posts', 'my_pre_get_posts' );
139
+ function my_pre_get_posts( $query ) {
140
+ if ( $query->is_year ) {
141
+ $taxonomy = get_queried_object();[ここが効かない]
142
+ $meta_query = array(
143
+ array(
144
+ 'key' => $query->get( 'meta_key' ),
145
+ 'value' => $query->get( 'year'),
146
+ 'compare' => 'LIKE'
147
+ ),
148
+ );
149
+ $tax_query = array(
150
+ array(
151
+ 'taxonomy' => 'course_menu',
152
+ 'field' => 'slug',
153
+ 'terms' => array( $taxonomy->slug[ここをどうしていいかわからない] ),
154
+ ),
155
+ );
156
+
157
+ $query->set( 'meta_query' , $meta_query );
158
+ $query->set( 'year' , '' );
159
+ $query->set( 'start_date' , '' );
160
+ $query->set( 'meta_key' , '' );
139
- $query->set( 'post_type' , 'course');
161
+ $query->set( 'post_type' , 'course');
162
+ $query->set( 'tax_query' , $tax_query);
163
+ }
164
+ }
165
+
140
- ```
166
+ ```
141
- このへんが変更どころなのかと思っているのですが。。

8

sqlのタグを追加しました。

2020/01/22 00:02

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
File without changes

7

質問文の訂正をしました

2020/01/20 12:51

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,12 @@
1
1
  以下のURLを参考に、カスタムフィールドの日付を利用してカスタム投稿ページの年別アーカイブを作成しました。
2
2
  [http://wpxtreme.jp/yearly-archive-using-custom-field-in-wordpress](http://wpxtreme.jp/yearly-archive-using-custom-field-in-wordpress)
3
3
 
4
+ さらにカスタム投稿タイプでの一覧にしたかったので、下記のとおりに追加しました。
5
+ [https://www.p-nt.com/technicblog/archives/92](https://www.p-nt.com/technicblog/archives/92)
6
+
7
+ ですがやりたい事はさらにカスタムタクソノミーでの一覧なのです。
8
+ 上記のurlのように何かをfunctions.phpに付け足すのだろうと調べているのですが、いまだに未解決じまいです。。何かヒントをいただけないでしょうか?
9
+
4
10
  【前提条件】
5
11
  カスタム投稿タイプ :course
6
12
  カスタムタクソノミー :course_menu
@@ -18,9 +24,8 @@
18
24
 
19
25
  参考サイトにカスタム投稿タイプを指定するまで
20
26
  ([homeURL]/course/date/[yyyy]/?meta_key=start_dateにするまで)
21
- はできたのですが、ここにどのようにカスタムタクソノミーの設定をしたら良いかがわかりません。
27
+ はできたのですが、ここにどのようにカスタムタクソノミーの設定すればよのでしょう
22
28
 
23
- なにかヒントでも良いので教えていただけないでしょうか。。
24
29
 
25
30
  以下、現在のソースです。
26
31
  ```
@@ -124,4 +129,13 @@
124
129
  $query->set( 'post_type' , 'course');
125
130
  }
126
131
  }
127
- ```
132
+ ```
133
+ カスタム投稿タイプを付け足した
134
+ ```
135
+ $where = "WHERE p.post_type = 'course' AND p.post_status = 'publish'";
136
+ ```
137
+
138
+ ```ここに言語を入力
139
+ $query->set( 'post_type' , 'course');
140
+ ```
141
+ このへんが変更どころなのかと思っているのですが。。

6

説明が下手だったのでやりたい事をもっと明確に書いてみました。。

2020/01/20 01:02

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
@@ -8,10 +8,18 @@
8
8
  現在アーカイブとしてリンクされてるurl :[homeURL]/course/date/[yyyy]/?meta_key=start_date
9
9
  使用しているテンプレートはarchive-course.php
10
10
 
11
+ 【やりたい事】
11
- やりたい事は、カスタムタクソノミーの年別アーカイブなのですがどのように記述ら良のかわかりません
12
+ カスタムフィールドのstart_dateの日付でカスムタクソノミーcourse_menuの年別アーカイブを作りたい。
12
13
 
14
+ この場合のurlは
13
- 参考サイトにカスタム投稿タイプを指定するまではできたのですが、ここにどのようにカスタムタクソノミーの設定をしたら良いかがわかりません。
15
+ [homeURL]/course/course_menu/date/[yyyy]/?meta_key=start_date
14
16
 
17
+ になるのかなと思いますが、どのように記述をしたら良いのかわかりません。
18
+
19
+ 参考サイトにカスタム投稿タイプを指定するまで
20
+ ([homeURL]/course/date/[yyyy]/?meta_key=start_dateにするまで)
21
+ はできたのですが、ここにどのようにカスタムタクソノミーの設定をしたら良いかがわかりません。
22
+
15
23
  なにかヒントでも良いので教えていただけないでしょうか。。
16
24
 
17
25
  以下、現在のソースです。

5

質問文の訂正をしました

2020/01/19 04:14

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
@@ -8,9 +8,9 @@
8
8
  現在アーカイブとしてリンクされてるurl :[homeURL]/course/date/[yyyy]/?meta_key=start_date
9
9
  使用しているテンプレートはarchive-course.php
10
10
 
11
- やりたい事は、さらに下層のカスタムタクソノミー毎の年別アーカイブなのですがどのように記述をしたら良いのかわかりません。
11
+ やりたい事は、カスタムタクソノミー毎の年別アーカイブなのですがどのように記述をしたら良いのかわかりません。
12
12
 
13
- 参考サイトにカスタム投稿タイプを指定するまではできたのですが、これですと、アーカイブ先は全てのタムの年別となっていまうのです
13
+ 参考サイトにカスタム投稿タイプを指定するまではできたのですが、ここにどようにカスタムタクソノミー設定をしたら良かがわかりせん
14
14
 
15
15
  なにかヒントでも良いので教えていただけないでしょうか。。
16
16
 

4

ソースを追加しました。

2020/01/19 02:23

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,7 @@
6
6
  カスタムタクソノミー :course_menu
7
7
  キーとなるカスタムフィールドの日付 :start_date
8
8
  現在アーカイブとしてリンクされてるurl :[homeURL]/course/date/[yyyy]/?meta_key=start_date
9
- 使用しているテンプレートはdate.php
9
+ 使用しているテンプレートはarchive-course.php
10
10
 
11
11
  やりたい事は、さらに下層のカスタムタクソノミー毎の年別アーカイブなのですがどのように記述をしたら良いのかわかりません。
12
12
 
@@ -15,6 +15,19 @@
15
15
  なにかヒントでも良いので教えていただけないでしょうか。。
16
16
 
17
17
  以下、現在のソースです。
18
+ ```
19
+ //archive-course.php
20
+ <ul class="yearly-list">
21
+ <?php
22
+ $taxonomy = $wp_query->get_queried_object();
23
+ my_get_year_archives( array(
24
+ 'date_field' => 'start_date',
25
+ 'post_type' => 'course',
26
+ ) );
27
+ ?>
28
+ </ul>
29
+ ```
30
+ ↑ここにカスタムタクソノミーの設定も入れたいのです。
18
31
 
19
32
  ```
20
33
  //functions.php

3

参考サイトのURLを修正しました。

2020/01/19 01:41

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  以下のURLを参考に、カスタムフィールドの日付を利用してカスタム投稿ページの年別アーカイブを作成しました。
2
- [https://www.p-nt.com/technicblog/archives/92](https://www.p-nt.com/technicblog/archives/92)
2
+ [http://wpxtreme.jp/yearly-archive-using-custom-field-in-wordpress](http://wpxtreme.jp/yearly-archive-using-custom-field-in-wordpress)
3
3
 
4
4
  【前提条件】
5
5
  カスタム投稿タイプ :course

2

functions.phpの中にmysql要素もありそうだったので、タグを追加しました。

2020/01/16 12:13

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
File without changes

1

いらない情報が多かった気がしたのでfunctions.phpに絞りました。

2020/01/16 12:09

投稿

M.Takeshita
M.Takeshita

スコア24

title CHANGED
File without changes
body CHANGED
@@ -6,52 +6,17 @@
6
6
  カスタムタクソノミー :course_menu
7
7
  キーとなるカスタムフィールドの日付 :start_date
8
8
  現在アーカイブとしてリンクされてるurl :[homeURL]/course/date/[yyyy]/?meta_key=start_date
9
+ 使用しているテンプレートはdate.php
9
10
 
10
- 上記のurlですと、使用されるテンプレートはarchive-course.phpとなり、カスタム投稿イプの年別っていま
11
+ たい事はさらに下層のカスタムタクソノミー毎の年別アーカイブのですがどのように記述をたら良のかわかりせん
11
12
 
12
- やりたい事は、さら下層のカスタムタクソノミー毎年別アーカイブですが、どのテンプレトを作成し、そように記述をしたら良いのかわからくなってしまいました
13
+ 参考サイトにカスタム投稿イプを指定するまではできたですが、これですと、アーカイブ先は全て年別となっていまうのです
13
14
 
14
- function.phpの書き方を変更するのか?はたまたarchive-course.phpの記述を変更すれば良いのか。
15
- もしくはテンプレートを追加すれば済むことなのか。。
16
-
17
15
  なにかヒントでも良いので教えていただけないでしょうか。。
18
16
 
19
- 以下、現在の機能しているソースです。
17
+ 以下、現在のソースです。
20
18
 
21
19
  ```
22
- //年別アーカイブへリンクする箇所のソース
23
-
24
- <ul class="yearly-list">
25
- <?php
26
- my_get_year_archives( array(
27
- 'date_field' => 'start_date'
28
- ) );
29
- ?>
30
- </ul>
31
- ```
32
-
33
- 現在カスタムフィールドの日付でソートしている状態ですが、カスタム投稿全体の年別アーカイブとなっています。
34
- やりたいのはカスタムタクソノミーの年別アーカイブなのです。。
35
- ```
36
- //archive-course.php
37
-
38
- <?php
39
- $args = array(
40
- 'post_type' => 'course',
41
- 'post_status' => 'publish',
42
- 'orderby' => 'meta_value',
43
- 'meta_key' => 'start_date',
44
- 'order' => 'DESC',
45
- );
46
- $query = new WP_Query($args);
47
- ?>
48
- <?php if($query->have_posts()): while($query->have_posts()) : $query->the_post(); ?>
49
- ループ内容省略
50
- <?php endwhile; endif; ?>
51
- <?php endif; ?>
52
- ```
53
-
54
- ```
55
20
  //functions.php
56
21
 
57
22
  function my_get_year_archives( $args = '' ) {