回答編集履歴

1

回答に間違いがあったため、ソースコードを全面的に修正

2017/02/09 12:21

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- こんな感じでょうか。
1
+ **回答に間違いがあったため、ソースコードを全面的に修正ました!(2017/02/09)**
2
2
 
3
3
 
4
4
 
@@ -10,11 +10,27 @@
10
10
 
11
11
  function my_getarchives_where( $where, $args ){
12
12
 
13
- $post_type = isset( $args['post_type'] ) ? $args['post_type'] : 'post';
13
+ global $my_wp_get_archives_cat;
14
14
 
15
- $cat = isset( $args['cat'] ) ? $args['cat'] : '';
15
+
16
16
 
17
+ $my_wp_get_archives_cat = isset( $args['cat'] ) ? $args['cat'] : '';
18
+
19
+
20
+
21
+ ?><pre><?php
22
+
23
+ var_dump($my_wp_get_archives_cat);
24
+
25
+ ?></pre><?php
26
+
27
+
28
+
29
+ if(!empty($my_wp_get_archives_cat)){
30
+
17
- $where = "WHERE post_type = '{$post_type}' AND terms.term_id = '{$cat}' AND post_status = 'publish'";
31
+ $where = $where . " AND terms.term_id = '" . $my_wp_get_archives_cat . "'";
32
+
33
+ }
18
34
 
19
35
 
20
36
 
@@ -26,7 +42,7 @@
26
42
 
27
43
 
28
44
 
29
- return $where;
45
+ return $where;
30
46
 
31
47
  }
32
48
 
@@ -36,15 +52,15 @@
36
52
 
37
53
  function my_getarchives_join($join, $args){
38
54
 
39
- global $wpdb;
55
+ global $wpdb;
40
56
 
41
-
42
57
 
43
- $join = " LEFT JOIN $wpdb->term_relationships as r ON $wpdb->posts.ID = r.object_ID
44
58
 
45
- LEFT JOIN $wpdb->term_taxonomy as t ON r.term_taxonomy_id = t.term_taxonomy_id
59
+ $join = " LEFT JOIN $wpdb->term_relationships as r ON $wpdb->posts.ID = r.object_ID
46
60
 
61
+ LEFT JOIN $wpdb->term_taxonomy as t ON r.term_taxonomy_id = t.term_taxonomy_id
62
+
47
- LEFT JOIN $wpdb->terms as terms ON t.term_id = terms.term_id";
63
+ LEFT JOIN $wpdb->terms as terms ON t.term_id = terms.term_id";
48
64
 
49
65
 
50
66
 
@@ -56,17 +72,61 @@
56
72
 
57
73
 
58
74
 
59
- return $join;
75
+ return $join;
60
76
 
61
77
  }
62
78
 
63
79
  add_filter('getarchives_join', 'my_getarchives_join', 10, 2);
64
80
 
81
+
82
+
83
+ function my_month_link($url, $year){
84
+
85
+ global $my_wp_get_archives_cat;
86
+
87
+
88
+
89
+ ?><pre><?php
90
+
91
+ var_dump($my_wp_get_archives_cat);
92
+
93
+ ?></pre><?php
94
+
95
+
96
+
97
+ if( !empty($my_wp_get_archives_cat) ) {
98
+
99
+ $url = add_query_arg( 'cat', $my_wp_get_archives_cat, $url);
100
+
101
+ }
102
+
103
+
104
+
105
+ ?><pre><?php
106
+
107
+ var_dump($url);
108
+
109
+ ?></pre><?php
110
+
111
+
112
+
113
+ return $url;
114
+
115
+ }
116
+
117
+ add_filter('month_link', 'my_month_link', 10, 2);
118
+
65
119
  ```
66
120
 
67
- `wp_get_archives()`内のフィルターフック`getarchives_where`と`getarchives_join`で、
121
+ - `wp_get_archives()`内のフィルターフック`getarchives_where`と`getarchives_join`で、
68
122
 
69
123
  WHERE句とJOIN句を書き換えてます。
124
+
125
+ - `wp_get_archives()`内で使われている`get_month_link`内のフィルターフック`month_link`で
126
+
127
+ URLにクエリストリングを追加しています。
128
+
129
+ - グローバル変数`$my_wp_get_archives_cat`を作成し、使用しています。
70
130
 
71
131
 
72
132
 
@@ -83,3 +143,5 @@
83
143
  [データベース構造 - WordPress Codex 日本語版](https://wpdocs.osdn.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E6%A7%8B%E9%80%A0)
84
144
 
85
145
  [WordPress plugin Archives for a category | kwebble.com](http://kwebble.com/projects/wp-plugin-afac)
146
+
147
+ [WordPress - wordpressにてカスタム投稿をカテゴリ指定して年別で出力したい。(65033)|teratail](https://teratail.com/questions/65033)