質問編集履歴
16
パン屑リスト
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
複数タグ(及び複数クエリー・パラメーター)で絞り込みした際のタグ・アーカイブ・ページのURLをパーマリンク(/tag/)に統一し、タイトル表示でもタグ複数の併記に変更したい。
|
1
|
+
複数タグ(及び複数クエリー・パラメーター)で絞り込みした際のタグ・アーカイブ・ページのURLをパーマリンク(/tag/)に統一し、タイトル表示(パン屑リスト含む)でもタグ複数の併記に変更したい。
|
test
CHANGED
File without changes
|
15
アクション・フック
test
CHANGED
File without changes
|
test
CHANGED
@@ -150,7 +150,7 @@
|
|
150
150
|
|
151
151
|
```
|
152
152
|
|
153
|
-
ただし、パン屑リストでの表示に問題は残る
|
153
|
+
ただし、パン屑リストでの表示に猶も問題は残る。現在、プラグイン[Breadcrumb NavXT](https://ja.wordpress.org/plugins/breadcrumb-navxt/#description)を使用(プラグインに用意された[アクション・フック](https://mtekk.us/code/breadcrumb-navxt/breadcrumb-navxt-doc/2/#action_reference)を利用する[改造法](https://accelboon.com/tn/breadcrumb-navxt-%e3%81%a7%e7%8b%ac%e8%87%aa%e3%81%ae%e9%a0%85%e7%9b%ae%e3%82%92%e8%bf%bd%e5%8a%a0%e3%81%99%e3%82%8b/)で、何とかできないか……?)。
|
154
154
|
|
155
155
|
|
156
156
|
|
14
Breadcrumb NavXT
test
CHANGED
File without changes
|
test
CHANGED
@@ -150,7 +150,7 @@
|
|
150
150
|
|
151
151
|
```
|
152
152
|
|
153
|
-
ただし、パン屑リストでの表示に問題は残る。
|
153
|
+
ただし、パン屑リストでの表示に問題は残る(現在、プラグイン[Breadcrumb NavXT](https://mtekk.us/code/breadcrumb-navxt/)を使用)。
|
154
154
|
|
155
155
|
|
156
156
|
|
13
パン屑リスト
test
CHANGED
File without changes
|
test
CHANGED
@@ -150,6 +150,8 @@
|
|
150
150
|
|
151
151
|
```
|
152
152
|
|
153
|
+
ただし、パン屑リストでの表示に問題は残る。
|
154
|
+
|
153
155
|
|
154
156
|
|
155
157
|
### 試したこと
|
12
パーマリンク/search/と組み合せた場合を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -190,7 +190,7 @@
|
|
190
190
|
|
191
191
|
```
|
192
192
|
|
193
|
-
とするのも試してみましたが、URLパラメーターが`?tag=タグ名A+タグ名B`だと`/tag/タグ名A+タグ名B`へのリダイレクトに成功するものの、タグだけでなくキイワード検索と組合わせた`?tag=タグ名A&s=キーワードB`では`/tag/タグ名A`へと遷移してしまってやはり「&」以下のクエリー`&s=キーワードB`が脱け落ちます。
|
193
|
+
とするのも試してみましたが、URLパラメーターが`?tag=タグ名A+タグ名B`だと`/tag/タグ名A+タグ名B`へのリダイレクトに成功するものの、タグだけでなくキイワード検索と組み合わせた`?tag=タグ名A&s=キーワードB`では`/tag/タグ名A`へと遷移してしまってやはり「&」以下のクエリー`&s=キーワードB`が脱け落ちます。同様に`http://example.com/wp/search/キーワードB?tag=タグ名A`でもリダイレクト先は`http://example.com/wp/tag/タグ名A`となってしまって`/search/キーワードB`が除去されるので、折角の複数パラメーターでのフィルタリング機能が空しくなります。
|
194
194
|
|
195
195
|
コード中の`wp_safe_redirect`を`wp_redirect`にしたりしても、駄目です。
|
196
196
|
|
11
翻訳関数__除去。「get_queried_objectがだめになるケース」を参照。
test
CHANGED
File without changes
|
test
CHANGED
@@ -140,7 +140,7 @@
|
|
140
140
|
|
141
141
|
if ( is_tag() ) {
|
142
142
|
|
143
|
-
$title = sprintf( esc_html
|
143
|
+
$title = sprintf( esc_html( 'タグ: %s' ), multiple_tags() );
|
144
144
|
|
145
145
|
}
|
146
146
|
|
@@ -198,6 +198,8 @@
|
|
198
198
|
|
199
199
|
複合条件での絞り込みでうまくゆかなくなるのは、「[Wordpress検索結果のURLを変えたい](https://teratail.com/questions/141475)」と類似です。そこでのコメントで質問者が「キーワードのみの検索」でなく「キーワード以外にパラメータを指定して検索をかける」と述べた箇所……。
|
200
200
|
|
201
|
+
または、「[get_queried_objectがだめになるケース](http://www-creators.com/archives/1107#get_queried_object-2)」で「タクソノミーアーカイブを、複数のタームでフィルターすると・・・、クエリーは動作するのですが、get_queired_objectは複数のタームが指定される事は考慮されていないので、おかしな値を返してきます」とあるのに、似るのかも……?
|
202
|
+
|
201
203
|
|
202
204
|
|
203
205
|
さて、どこを直せばうまくゆくのか。
|
10
タイトルに「(及び複数クエリー・パラメーター)」を挿入。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
複数タグで絞り込みした際のタグ・アーカイブ・ページのURLをパーマリンク(/tag/)に統一し、タイトル表示でもタグ複数の併記に変更したい。
|
1
|
+
複数タグ(及び複数クエリー・パラメーター)で絞り込みした際のタグ・アーカイブ・ページのURLをパーマリンク(/tag/)に統一し、タイトル表示でもタグ複数の併記に変更したい。
|
test
CHANGED
@@ -176,7 +176,7 @@
|
|
176
176
|
|
177
177
|
```
|
178
178
|
|
179
|
-
しかし、これで`http://example.com/wp/?tag=タグ名A+タグ名B`とクエリーを入力すると、リダイレクト結果のURLは`http://example.com/wp/tag/タグ名A%2Bタグ名B`となってしまって、「お探しのページが見つかりません。」と出ます。URL文字列で「+」が「%2B」にエンコードされた所為か、複数タグでのフィルタリングが無効にな
|
179
|
+
しかし、これで`http://example.com/wp/?tag=タグ名A+タグ名B`とクエリーを入力すると、リダイレクト結果のURLは`http://example.com/wp/tag/タグ名A%2Bタグ名B`となってしまって、「お探しのページが見つかりません。」と出ます。URL文字列で「+」が「%2B」にエンコードされた所為か、複数タグでのフィルタリングが無効になります。
|
180
180
|
|
181
181
|
また、タグで絞り込みした一覧を更にキーワード検索で絞り込んだ場合のURL`http://example.com/wp/?tag=タグ名A&s=キーワードB`でも、結果は「ページが見つかりませんでした」になります。遷移後のURLからはなぜか`&s=キーワードB`が脱落し、しかも、「タグ名A」を仮に日本語で"あ"とするとエンコードは"%E3%81%82"ですが、このエンコードした文字列中の「%」がさらに「%25」にエンコードされて"%25e3%2581%2582"となる始末。これが`http://example.com/wp/tag/タグ名A?s=キーワードB`だったらまともに動作するので、どうも「tag」以外のパラメーターが&で附加されてゆくといけないみたいです。
|
182
182
|
|
9
推敲
test
CHANGED
File without changes
|
test
CHANGED
@@ -192,11 +192,15 @@
|
|
192
192
|
|
193
193
|
とするのも試してみましたが、URLパラメーターが`?tag=タグ名A+タグ名B`だと`/tag/タグ名A+タグ名B`へのリダイレクトに成功するものの、タグだけでなくキイワード検索と組合わせた`?tag=タグ名A&s=キーワードB`では`/tag/タグ名A`へと遷移してしまってやはり「&」以下のクエリー`&s=キーワードB`が脱け落ちます。
|
194
194
|
|
195
|
+
コード中の`wp_safe_redirect`を`wp_redirect`にしたりしても、駄目です。
|
196
|
+
|
197
|
+
|
198
|
+
|
195
|
-
複合条件での絞り込みでうまくゆかな
|
199
|
+
複合条件での絞り込みでうまくゆかなくなるのは、「[Wordpress検索結果のURLを変えたい](https://teratail.com/questions/141475)」と類似です。そこでのコメントで質問者が「キーワードのみの検索」でなく「キーワード以外にパラメータを指定して検索をかける」と述べた箇所……。
|
196
|
-
|
197
|
-
|
200
|
+
|
198
|
-
|
201
|
+
|
202
|
+
|
199
|
-
どこを直せばうまくゆくのか。
|
203
|
+
さて、どこを直せばうまくゆくのか。
|
200
204
|
|
201
205
|
或いは、別の解法があるのか($wp_rewriteを使った方法……?)。
|
202
206
|
|
8
「試したこと」に大幅加筆。
test
CHANGED
File without changes
|
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
```
|
38
38
|
|
39
|
-
これは「+」で附け足したタグ名Bが無視されてしまって単数タグの場合と変
|
39
|
+
これは「+」で附け足したタグ名Bが無視されてしまって単数タグの場合と変りがなく、紛れやすい。混同を防ぐには、複合したフィルタリングであることを明示すべきですから、
|
40
40
|
|
41
41
|
```HTML
|
42
42
|
|
@@ -178,11 +178,27 @@
|
|
178
178
|
|
179
179
|
しかし、これで`http://example.com/wp/?tag=タグ名A+タグ名B`とクエリーを入力すると、リダイレクト結果のURLは`http://example.com/wp/tag/タグ名A%2Bタグ名B`となってしまって、「お探しのページが見つかりません。」と出ます。URL文字列で「+」が「%2B」にエンコードされた所為か、複数タグでのフィルタリングが無効になるみたいです。
|
180
180
|
|
181
|
-
|
181
|
+
また、タグで絞り込みした一覧を更にキーワード検索で絞り込んだ場合のURL`http://example.com/wp/?tag=タグ名A&s=キーワードB`でも、結果は「ページが見つかりませんでした」になります。遷移後のURLからはなぜか`&s=キーワードB`が脱落し、しかも、「タグ名A」を仮に日本語で"あ"とするとエンコードは"%E3%81%82"ですが、このエンコードした文字列中の「%」がさらに「%25」にエンコードされて"%25e3%2581%2582"となる始末。これが`http://example.com/wp/tag/タグ名A?s=キーワードB`だったらまともに動作するので、どうも「tag」以外のパラメーターが&で附加されてゆくといけないみたいです。
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
エンコードが原因ならば、と上記コード三行目で`urlencode()`を使用せずに
|
186
|
+
|
187
|
+
```PHP
|
188
|
+
|
189
|
+
wp_safe_redirect( home_url( '/tag/' ) . get_query_var( 'tag' ) );
|
190
|
+
|
191
|
+
```
|
192
|
+
|
193
|
+
とするのも試してみましたが、URLパラメーターが`?tag=タグ名A+タグ名B`だと`/tag/タグ名A+タグ名B`へのリダイレクトに成功するものの、タグだけでなくキイワード検索と組合わせた`?tag=タグ名A&s=キーワードB`では`/tag/タグ名A`へと遷移してしまってやはり「&」以下のクエリー`&s=キーワードB`が脱け落ちます。
|
194
|
+
|
195
|
+
複合条件での絞り込みでうまくゆかないのは、「[Wordpress検索結果のURLを変えたい](https://teratail.com/questions/141475)」と類似です。そこでのコメントで質問者が「キーワードのみの検索」でなく「キーワード以外にパラメータを指定して検索をかける」と述べた箇所……。
|
196
|
+
|
197
|
+
ほか、コード中の`wp_safe_redirect`を`wp_redirect`にしても、やはり駄目です。
|
182
198
|
|
183
199
|
どこを直せばうまくゆくのか。
|
184
200
|
|
185
|
-
或いは、別の解法があるのか。
|
201
|
+
或いは、別の解法があるのか($wp_rewriteを使った方法……?)。
|
186
202
|
|
187
203
|
御教示戴けると有り難く存じます。
|
188
204
|
|
7
追記の日附を訂正。
test
CHANGED
File without changes
|
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
e.g.[get_the_archive_title()で呼び出したタイトルから”アーカイブ:”、”カテゴリー:”、”タグ:”、”作者:”を消す方法](http://shintaro-kawase.hatenablog.com/entry/20160620/1466351239)
|
56
56
|
|
57
|
-
**2019-02-
|
57
|
+
**2019-02-28追記**
|
58
58
|
|
59
59
|
既に消滅したサイトながらInternet Archiveに残存する「[[覚書] 複数タグのアーカイブで、タグ情報一式を取得](http://web.archive.org/web/20130427063725/http://animal-taste.com/wordpress-tips/2008/12/1115.html)」を真似て、タイトル表示の問題は解決できました。下記コードをテーマのfunctions.phpに追加。
|
60
60
|
|
6
コードと地の文とを統一
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
```HTML
|
42
42
|
|
43
|
-
<title>タグ名A+タグ名B - サイト名</title>
|
43
|
+
<title>タグ: タグ名A+タグ名B - サイト名</title>
|
44
44
|
|
45
45
|
……
|
46
46
|
|
@@ -70,11 +70,11 @@
|
|
70
70
|
|
71
71
|
if ( strpos($tagVar, '+') || strpos($tagVar, ' ') )
|
72
72
|
|
73
|
-
$separator = "
|
73
|
+
$separator = " + ";
|
74
74
|
|
75
75
|
else if ( strpos($tagVar, ',') )
|
76
76
|
|
77
|
-
$separator = "
|
77
|
+
$separator = " , ";
|
78
78
|
|
79
79
|
$tagSlugs = $currentTerms = array();
|
80
80
|
|
@@ -124,7 +124,7 @@
|
|
124
124
|
|
125
125
|
if ( is_tag() ) {
|
126
126
|
|
127
|
-
$title['title'] = 'タグ:'.multiple_tags();
|
127
|
+
$title['title'] = 'タグ: '.multiple_tags();
|
128
128
|
|
129
129
|
}
|
130
130
|
|
@@ -134,13 +134,13 @@
|
|
134
134
|
|
135
135
|
|
136
136
|
|
137
|
-
// アーカイブ・ページのタイトル変更
|
137
|
+
// アーカイブ・ページのタイトル(h1要素)変更
|
138
138
|
|
139
139
|
add_filter( 'get_the_archive_title', function ($title) {
|
140
140
|
|
141
141
|
if ( is_tag() ) {
|
142
142
|
|
143
|
-
$title = sprintf( esc_html__( 'タグ
|
143
|
+
$title = sprintf( esc_html__( 'タグ: %s' ), multiple_tags() );
|
144
144
|
|
145
145
|
}
|
146
146
|
|
5
「発生している問題」に解決法の追記。
test
CHANGED
File without changes
|
test
CHANGED
@@ -54,6 +54,102 @@
|
|
54
54
|
|
55
55
|
e.g.[get_the_archive_title()で呼び出したタイトルから”アーカイブ:”、”カテゴリー:”、”タグ:”、”作者:”を消す方法](http://shintaro-kawase.hatenablog.com/entry/20160620/1466351239)
|
56
56
|
|
57
|
+
**2019-02-08追記**
|
58
|
+
|
59
|
+
既に消滅したサイトながらInternet Archiveに残存する「[[覚書] 複数タグのアーカイブで、タグ情報一式を取得](http://web.archive.org/web/20130427063725/http://animal-taste.com/wordpress-tips/2008/12/1115.html)」を真似て、タイトル表示の問題は解決できました。下記コードをテーマのfunctions.phpに追加。
|
60
|
+
|
61
|
+
```PHP
|
62
|
+
|
63
|
+
function multiple_tags() {
|
64
|
+
|
65
|
+
//複数タグのアーカイブでURLからスラッグを拾ってID・タグ名を取得。
|
66
|
+
|
67
|
+
$tagVar = get_query_var('tag');
|
68
|
+
|
69
|
+
if ( !empty($tagVar) ) {
|
70
|
+
|
71
|
+
if ( strpos($tagVar, '+') || strpos($tagVar, ' ') )
|
72
|
+
|
73
|
+
$separator = "+";
|
74
|
+
|
75
|
+
else if ( strpos($tagVar, ',') )
|
76
|
+
|
77
|
+
$separator = "/";
|
78
|
+
|
79
|
+
$tagSlugs = $currentTerms = array();
|
80
|
+
|
81
|
+
$tagSlugs = preg_split('(+|,| )', $tagVar);
|
82
|
+
|
83
|
+
foreach ($tagSlugs as $tagSlug)
|
84
|
+
|
85
|
+
$currentTerms[] = get_term_by('slug', $tagSlug, 'post_tag');
|
86
|
+
|
87
|
+
}
|
88
|
+
|
89
|
+
//出力
|
90
|
+
|
91
|
+
if ( !empty($currentTerms) ) {
|
92
|
+
|
93
|
+
$tagCount = count($currentTerms);
|
94
|
+
|
95
|
+
$i = 2;
|
96
|
+
|
97
|
+
foreach ($currentTerms as $currentTerm) {
|
98
|
+
|
99
|
+
$currentTagName .= $currentTerm->name;
|
100
|
+
|
101
|
+
if ( $i < $tagCount )
|
102
|
+
|
103
|
+
$currentTagName .= ', ';
|
104
|
+
|
105
|
+
else if ( $i == $tagCount )
|
106
|
+
|
107
|
+
$currentTagName .= $separator;
|
108
|
+
|
109
|
+
$i++;
|
110
|
+
|
111
|
+
}
|
112
|
+
|
113
|
+
}
|
114
|
+
|
115
|
+
return $currentTagName;
|
116
|
+
|
117
|
+
}
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
// titleタグ変更 Cf. https://teratail.com/questions/168613
|
122
|
+
|
123
|
+
function change_document_title_parts( $title ) {
|
124
|
+
|
125
|
+
if ( is_tag() ) {
|
126
|
+
|
127
|
+
$title['title'] = 'タグ:'.multiple_tags();
|
128
|
+
|
129
|
+
}
|
130
|
+
|
131
|
+
return $title;
|
132
|
+
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
// アーカイブ・ページのタイトル変更
|
138
|
+
|
139
|
+
add_filter( 'get_the_archive_title', function ($title) {
|
140
|
+
|
141
|
+
if ( is_tag() ) {
|
142
|
+
|
143
|
+
$title = sprintf( esc_html__( 'タグ:%s' ), multiple_tags() );
|
144
|
+
|
145
|
+
}
|
146
|
+
|
147
|
+
return $title;
|
148
|
+
|
149
|
+
});
|
150
|
+
|
151
|
+
```
|
152
|
+
|
57
153
|
|
58
154
|
|
59
155
|
### 試したこと
|
4
single_tag_title()に関し追記
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
複数タグで絞り込みした際のタグ・アーカイブ
|
1
|
+
複数タグで絞り込みした際のタグ・アーカイブ・ページのURLをパーマリンク(/tag/)に統一し、タイトル表示でもタグ複数の併記に変更したい。
|
test
CHANGED
@@ -50,6 +50,10 @@
|
|
50
50
|
|
51
51
|
と、指定したタグ複数を併記する表示に改める仕組みにしたい。
|
52
52
|
|
53
|
+
アーカイブ・ページのタイトルを変更する方法を検索しても、`single_tag_title()`関数で接頭辞(prefix)の「タグ:」を削除する例ばかり出てきて、複数のタグ・スラッグを取得するやり方が見つけられません。
|
54
|
+
|
55
|
+
e.g.[get_the_archive_title()で呼び出したタイトルから”アーカイブ:”、”カテゴリー:”、”タグ:”、”作者:”を消す方法](http://shintaro-kawase.hatenablog.com/entry/20160620/1466351239)
|
56
|
+
|
53
57
|
|
54
58
|
|
55
59
|
### 試したこと
|
3
タイトル加筆
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
複数タグで絞り込みした際のタグ・アーカイブのページURLをパーマリンクに統一し、タイトル表示も変更したい。
|
1
|
+
複数タグで絞り込みした際のタグ・アーカイブのページURLをパーマリンク(/tag/)に統一し、タイトル表示でもタグ複数の併記に変更したい。
|
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
[サイトURL]/tag/「タグのスラッグ」
|
6
6
|
|
7
|
-
即ち、URLに`http://example.com/wp/?tag=タグ名`とクエリのパラメーターを附け足すと、強制的に`http://example.com/wp/tag/タグ名`へと遷移されます。
|
7
|
+
即ち、URLに`http://example.com/wp/?tag=タグ名`とクエリのパラメーターを附け足すと、強制的に`http://example.com/wp/tag/タグ名`へと自動遷移されます。
|
8
8
|
|
9
9
|
ところで、記事にタグは複数附けられ、指定した複数のタグを併せ持つ記事をAND検索みたいに絞り込み表示できます。
|
10
10
|
|
@@ -48,7 +48,7 @@
|
|
48
48
|
|
49
49
|
```
|
50
50
|
|
51
|
-
と表示
|
51
|
+
と、指定したタグ複数を併記する表示に改める仕組みにしたい。
|
52
52
|
|
53
53
|
|
54
54
|
|
@@ -78,7 +78,7 @@
|
|
78
78
|
|
79
79
|
しかし、これで`http://example.com/wp/?tag=タグ名A+タグ名B`とクエリーを入力すると、リダイレクト結果のURLは`http://example.com/wp/tag/タグ名A%2Bタグ名B`となってしまって、「お探しのページが見つかりません。」と出ます。URL文字列で「+」が「%2B」にエンコードされた所為か、複数タグでのフィルタリングが無効になるみたいです。
|
80
80
|
|
81
|
-
コード中の`wp_safe_redirect`を`wp_redirect`にしても駄目です。
|
81
|
+
コード中の`wp_safe_redirect`を`wp_redirect`にしてもやはり駄目です。
|
82
82
|
|
83
83
|
どこを直せばうまくゆくのか。
|
84
84
|
|
2
タイトル変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
複数タグで絞り込みした際のタグ・アーカイブのページURLをパーマリンクに統一したい
|
1
|
+
複数タグで絞り込みした際のタグ・アーカイブのページURLをパーマリンクに統一し、タイトル表示も変更したい。
|
test
CHANGED
File without changes
|
1
脱字修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
|
19
|
+
猶、できることならば、タグで絞り込んだ中から更にキーワード検索で絞り込みする場合のURL`http://example.com/wp/?tag=タグ名A&s=キーワードB`乃至`http://example.com/wp/tag/タグ名A?s=キーワードB`等も、パーマリンクに則って`http://example.com/wp/tag/タグ名A/search/キーワードB`へと遷移されることが、望ましい。
|
20
20
|
|
21
21
|
Cf.[WordPressのサイト上で簡単に並び替え&絞り込みする方法 ](https://magnets.jp/web_design/3124/)
|
22
22
|
|
@@ -78,7 +78,7 @@
|
|
78
78
|
|
79
79
|
しかし、これで`http://example.com/wp/?tag=タグ名A+タグ名B`とクエリーを入力すると、リダイレクト結果のURLは`http://example.com/wp/tag/タグ名A%2Bタグ名B`となってしまって、「お探しのページが見つかりません。」と出ます。URL文字列で「+」が「%2B」にエンコードされた所為か、複数タグでのフィルタリングが無効になるみたいです。
|
80
80
|
|
81
|
-
`wp_safe_redirect`を`wp_redirect`にしても駄目です。
|
81
|
+
コード中の`wp_safe_redirect`を`wp_redirect`にしても駄目です。
|
82
82
|
|
83
83
|
どこを直せばうまくゆくのか。
|
84
84
|
|