質問編集履歴
11
コードに追記場所記載
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
現状の状態にソースを修正しました。
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
|
-
カスタム
|
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
|
-
|
115
|
+
$tax_query = array(
|
143
|
-
|
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
|
-
|
117
|
+
'taxonomy' => 'course_menu',
|
152
|
-
|
118
|
+
'field' => 'slug',
|
153
|
-
|
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
|
-
|
128
|
+
$query->set( 'tax_query' , $tax_query);
|
129
|
+
|
163
130
|
}
|
164
131
|
}
|
132
|
+
```
|
133
|
+
SQLのソースのような部分は、知識が足りず、一回あきらめ、アドバイスいただき上記のようにtax-queryで試みたのですが、ターム一覧のようにはなりませんでした。
|
165
134
|
|
166
|
-
|
135
|
+
色々トライしたのですが、どうしてもうまくいかず。。なにか手がかりを探しています。
|
9
現状の状態を追加しました。
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
|
-
|
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のタグを追加しました。
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
7
質問文の訂正をしました
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
説明が下手だったのでやりたい事をもっと明確に書いてみました。。
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
質問文の訂正をしました
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
ソースを追加しました。
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
|
-
使用しているテンプレートは
|
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を修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
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
4
|
【前提条件】
|
5
5
|
カスタム投稿タイプ :course
|
2
functions.phpの中にmysql要素もありそうだったので、タグを追加しました。
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
1
いらない情報が多かった気がしたのでfunctions.phpに絞りました。
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
|
-
|
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 = '' ) {
|