回答編集履歴
3
コードのシンタックスエラー修正
test
CHANGED
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
EOF;
|
88
88
|
|
89
|
-
|
89
|
+
|
90
90
|
|
91
91
|
return $join;
|
92
92
|
|
@@ -102,7 +102,7 @@
|
|
102
102
|
|
103
103
|
$where .= " AND tr.term_taxonomy_id =" . $cat;
|
104
104
|
|
105
|
-
|
105
|
+
|
106
106
|
|
107
107
|
return $where;
|
108
108
|
|
2
コードを改良
test
CHANGED
@@ -42,8 +42,86 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
-
20190201 追記
|
45
|
+
2019/02/01 追記
|
46
46
|
|
47
47
|
|
48
48
|
|
49
49
|
上記コードを修正。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
---
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
2019/02/01 追記2
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
`getarchives_join`と`getarchives_where`フックの処理を追加し、該当のカテゴリーに所属する投稿がある場合のみ月別アーカイブのリンクが表示されるようにしました。
|
62
|
+
|
63
|
+
また、カテゴリースラッグではなく、カテゴリーIDでの処理に変更にしました。
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
```PHP
|
68
|
+
|
69
|
+
add_filter( 'getarchives_join', 'teratail168423_HisaoAndo_1', 10, 2 );
|
70
|
+
|
71
|
+
add_filter( 'getarchives_where', 'teratail168423_HisaoAndo_2', 10, 2 );
|
72
|
+
|
73
|
+
add_filter( 'get_archives_link', 'teratail168423_HisaoAndo_3', 10, 6 );
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
function teratail168423_HisaoAndo_1( $join, $r ) {
|
78
|
+
|
79
|
+
global $wpdb;
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
$join .= <<< EOF
|
84
|
+
|
85
|
+
LEFT JOIN $wpdb->term_relationships AS tr ON ( $wpdb->posts.ID = tr.object_id )
|
86
|
+
|
87
|
+
EOF;
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
return $join;
|
92
|
+
|
93
|
+
}
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
function teratail168423_HisaoAndo_2( $where, $r ) {
|
98
|
+
|
99
|
+
$cat = get_query_var('cat');
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
$where .= " AND tr.term_taxonomy_id =" . $cat;
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
return $where;
|
108
|
+
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
function teratail168423_HisaoAndo_3( $link_html, $url, $text, $format, $before, $after ) {
|
114
|
+
|
115
|
+
$cat = get_query_var('cat');
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
$link_html = preg_replace('/href=["\'](.*?)["\']/','href="$1?cat=' . $cat .'"', $link_html);
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
return $link_html;
|
124
|
+
|
125
|
+
}
|
126
|
+
|
127
|
+
```
|
1
質問文の追記を受けて、コードを修正
test
CHANGED
@@ -16,7 +16,11 @@
|
|
16
16
|
|
17
17
|
function teratail168423_HisaoAndo_3( $link_html, $url, $text, $format, $before, $after ) {
|
18
18
|
|
19
|
-
$category_name = "item";
|
19
|
+
//$category_name = "item"; // 20190201 修正
|
20
|
+
|
21
|
+
$category_name = get_query_var('category_name'); // 20190201 修正
|
22
|
+
|
23
|
+
|
20
24
|
|
21
25
|
$link_html = preg_replace('/href=["\'](.*?)["\']/','href="$1?category_name=' . $category_name .'"', $link_html);
|
22
26
|
|
@@ -31,3 +35,15 @@
|
|
31
35
|
|
32
36
|
|
33
37
|
ただし、該当するカテゴリーの月別アーカイブが存在しない場合に404エラーになってしまうので、もう少し丁寧にやるなら、`getarchives_join`と`getarchives_where`フックを使用する必要があります。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
---
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
20190201 追記
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
上記コードを修正。
|