質問編集履歴

6

取得する情報を投稿IDのみに絞り込む

2015/08/09 14:50

投稿

flat
flat

スコア617

test CHANGED
@@ -1 +1 @@
1
- WordPressで現在の表示条件に応じた投稿情報を取得
1
+ クエリに応じた投稿のIDを取得
test CHANGED
@@ -1,23 +1,13 @@
1
- ホームやアーカイブなどでグローバル変数の$postsを参照すると表示中のページにある投稿情報が取得出来ますが、表示されていない2ページ目以降の投稿情報は取得出来ません。
2
-
3
- れを2ページ目以降も取得したいです。
1
+ リクエストさたクエリに応じた投稿のIDすべて取得する方法はないでしょうか?
4
2
 
5
3
 
6
4
 
7
- えば以下の様な分類があり
5
+ クエリの
8
6
 
9
- カテゴリー: 犬(dog)
10
-
11
- タグ: 犬種
12
-
13
- カスタム分類: 性別(gender)
7
+ `http://example.com/?s&category_name=box-model?tag=snippets+reference&property=margin+padding`
14
8
 
15
9
 
16
10
 
17
- URLを開た場合
11
+ ちなみにget_postsやWP_Queryを使えば一応取得は出来るですが、投稿が増えれば増えるほど取得する時の負荷が大きくってしまます。
18
12
 
19
- http://example.com/category/dog/?tag=bulldog&gender=male
20
-
21
-
22
-
23
- 「犬(dog)」「ブルドッグ(bulldog)」「オス(male)」とう条件に一致した投稿投稿情報のみを取得るにはどうしたら良でしょうか。
13
+ 何か良い方法がないかと`$wp_query`や`query.php`を見ながら考えてが中々思びません…

5

追記箇所ごと不完全なコードを削除

2015/08/09 14:50

投稿

flat
flat

スコア617

test CHANGED
File without changes
test CHANGED
@@ -21,171 +21,3 @@
21
21
 
22
22
 
23
23
  「犬(dog)」「ブルドッグ(bulldog)」「オス(male)」という条件に一致した投稿の投稿情報のみを取得するにはどうしたら良いでしょうか。
24
-
25
-
26
-
27
- [追記]
28
-
29
- 自分なりに試行錯誤してそれらしい関数を作成しました。
30
-
31
-
32
-
33
- ただし、現状では次の様なURLでないと正しく投稿情報が取得できません。
34
-
35
- http://example.com/?s=&category_name=dog&tag=bulldog&gender=male
36
-
37
-
38
-
39
- 次の様にタクソノミーがディレクトリパスにあるとそのタクソノミーは取得出来ません。
40
-
41
- http://example.com/category/dog/?tag=bulldog&gender=male
42
-
43
- http://example.com/tag/bulldog/?category_name=dog&gender=male
44
-
45
- http://example.com/gender/male/?category_name=dog&tag=bulldog
46
-
47
-
48
-
49
- また、URLを参照しなければいけないのも何となくすっきりしません。
50
-
51
- 引き続き試行錯誤は続けますが、もっと他に良い方法があればどなたか回答して下さると嬉しいです。
52
-
53
-
54
-
55
- ```lang-PHP
56
-
57
- // 現在の表示条件に応じた投稿情報を取得する関数
58
-
59
- function current_posts() {
60
-
61
-
62
-
63
- // 検索キーワードを取得
64
-
65
- $search_keyword = $_REQUEST['s'];
66
-
67
-
68
-
69
- // URIを取得
70
-
71
- $get_uri = $_SERVER['REQUEST_URI'];
72
-
73
-
74
-
75
- // URIを解析して配列にする
76
-
77
- $uri_array = parse_url( $get_uri );
78
-
79
-
80
-
81
- // クエリを取り出して連想配列にする
82
-
83
- parse_str( $uri_array['query'], $parameters );
84
-
85
-
86
-
87
- // クエリの連想配列から検索文字の配列を削除
88
-
89
- unset( $parameters[s] );
90
-
91
-
92
-
93
- // クエリの連想配列のキーと値を反転
94
-
95
- $parameters_flip = array_flip( $parameters );
96
-
97
-
98
-
99
- // 反転したクエリの連想配列にあるカテゴリーの値を取得
100
-
101
- $category_key = array_search( 'category_name', $parameters_flip );
102
-
103
-
104
-
105
- // 反転したクエリの連想配列にあるタグの値を取得
106
-
107
- $tag_key = array_search( 'tag', $parameters_flip );
108
-
109
-
110
-
111
- // カテゴリーの値をタクソノミー名に変換
112
-
113
- if( in_array( 'category_name', $parameters_flip ) ) {
114
-
115
- $parameters_flip[$category_key] = 'category';
116
-
117
- }
118
-
119
-
120
-
121
- // タグの値をタクソノミー名に変換
122
-
123
- if( in_array( 'tag', $parameters_flip ) ) {
124
-
125
- $parameters_flip[$tag_key] = 'post_tag';
126
-
127
- }
128
-
129
-
130
-
131
- // クエリの連想配列のキーと値を再度反転させて元に戻す
132
-
133
- $parameters = array_flip( $parameters_flip );
134
-
135
-
136
-
137
- // get_postsの引数 'tax_query' の値に渡す配列を作成して変数 $tax_query_parameters に代入
138
-
139
- if( $parameters ) {
140
-
141
- foreach( $parameters as $key => $value ) {
142
-
143
- $tax_query_parameters[] = array(
144
-
145
- 'taxonomy' => $key,
146
-
147
- 'field' => 'slug',
148
-
149
- 'terms' => $value,
150
-
151
- 'operator' => 'AND',
152
-
153
- );
154
-
155
- }
156
-
157
- }
158
-
159
-
160
-
161
- // get_postsに渡すパラメータの配列を作成して変数 $arg に代入
162
-
163
- $arg = array(
164
-
165
- 'posts_per_page' => '-1',
166
-
167
- 'post_type' => 'post',
168
-
169
- 'post_status' => 'publish',
170
-
171
- 'tax_query' => $tax_query_parameters,
172
-
173
- 's' => $search_keyword,
174
-
175
- );
176
-
177
-
178
-
179
- // 現在の表示条件に応じた投稿情報を変数 $current_posts に代入
180
-
181
- $current_posts = get_posts( $arg );
182
-
183
-
184
-
185
- return $current_posts;
186
-
187
-
188
-
189
- }
190
-
191
- ```

4

質問タイトルを意図が分かりやすいものに変更

2015/05/31 10:08

投稿

flat
flat

スコア617

test CHANGED
@@ -1 +1 @@
1
- WordPressで現在表示中のすべての投稿の投稿情報を取得したい
1
+ WordPressで現在表示条件に応じた投稿情報を取得
test CHANGED
File without changes

3

質問本文への追記

2015/05/28 08:59

投稿

flat
flat

スコア617

test CHANGED
File without changes
test CHANGED
@@ -21,3 +21,171 @@
21
21
 
22
22
 
23
23
  「犬(dog)」「ブルドッグ(bulldog)」「オス(male)」という条件に一致した投稿の投稿情報のみを取得するにはどうしたら良いでしょうか。
24
+
25
+
26
+
27
+ [追記]
28
+
29
+ 自分なりに試行錯誤してそれらしい関数を作成しました。
30
+
31
+
32
+
33
+ ただし、現状では次の様なURLでないと正しく投稿情報が取得できません。
34
+
35
+ http://example.com/?s=&category_name=dog&tag=bulldog&gender=male
36
+
37
+
38
+
39
+ 次の様にタクソノミーがディレクトリパスにあるとそのタクソノミーは取得出来ません。
40
+
41
+ http://example.com/category/dog/?tag=bulldog&gender=male
42
+
43
+ http://example.com/tag/bulldog/?category_name=dog&gender=male
44
+
45
+ http://example.com/gender/male/?category_name=dog&tag=bulldog
46
+
47
+
48
+
49
+ また、URLを参照しなければいけないのも何となくすっきりしません。
50
+
51
+ 引き続き試行錯誤は続けますが、もっと他に良い方法があればどなたか回答して下さると嬉しいです。
52
+
53
+
54
+
55
+ ```lang-PHP
56
+
57
+ // 現在の表示条件に応じた投稿情報を取得する関数
58
+
59
+ function current_posts() {
60
+
61
+
62
+
63
+ // 検索キーワードを取得
64
+
65
+ $search_keyword = $_REQUEST['s'];
66
+
67
+
68
+
69
+ // URIを取得
70
+
71
+ $get_uri = $_SERVER['REQUEST_URI'];
72
+
73
+
74
+
75
+ // URIを解析して配列にする
76
+
77
+ $uri_array = parse_url( $get_uri );
78
+
79
+
80
+
81
+ // クエリを取り出して連想配列にする
82
+
83
+ parse_str( $uri_array['query'], $parameters );
84
+
85
+
86
+
87
+ // クエリの連想配列から検索文字の配列を削除
88
+
89
+ unset( $parameters[s] );
90
+
91
+
92
+
93
+ // クエリの連想配列のキーと値を反転
94
+
95
+ $parameters_flip = array_flip( $parameters );
96
+
97
+
98
+
99
+ // 反転したクエリの連想配列にあるカテゴリーの値を取得
100
+
101
+ $category_key = array_search( 'category_name', $parameters_flip );
102
+
103
+
104
+
105
+ // 反転したクエリの連想配列にあるタグの値を取得
106
+
107
+ $tag_key = array_search( 'tag', $parameters_flip );
108
+
109
+
110
+
111
+ // カテゴリーの値をタクソノミー名に変換
112
+
113
+ if( in_array( 'category_name', $parameters_flip ) ) {
114
+
115
+ $parameters_flip[$category_key] = 'category';
116
+
117
+ }
118
+
119
+
120
+
121
+ // タグの値をタクソノミー名に変換
122
+
123
+ if( in_array( 'tag', $parameters_flip ) ) {
124
+
125
+ $parameters_flip[$tag_key] = 'post_tag';
126
+
127
+ }
128
+
129
+
130
+
131
+ // クエリの連想配列のキーと値を再度反転させて元に戻す
132
+
133
+ $parameters = array_flip( $parameters_flip );
134
+
135
+
136
+
137
+ // get_postsの引数 'tax_query' の値に渡す配列を作成して変数 $tax_query_parameters に代入
138
+
139
+ if( $parameters ) {
140
+
141
+ foreach( $parameters as $key => $value ) {
142
+
143
+ $tax_query_parameters[] = array(
144
+
145
+ 'taxonomy' => $key,
146
+
147
+ 'field' => 'slug',
148
+
149
+ 'terms' => $value,
150
+
151
+ 'operator' => 'AND',
152
+
153
+ );
154
+
155
+ }
156
+
157
+ }
158
+
159
+
160
+
161
+ // get_postsに渡すパラメータの配列を作成して変数 $arg に代入
162
+
163
+ $arg = array(
164
+
165
+ 'posts_per_page' => '-1',
166
+
167
+ 'post_type' => 'post',
168
+
169
+ 'post_status' => 'publish',
170
+
171
+ 'tax_query' => $tax_query_parameters,
172
+
173
+ 's' => $search_keyword,
174
+
175
+ );
176
+
177
+
178
+
179
+ // 現在の表示条件に応じた投稿情報を変数 $current_posts に代入
180
+
181
+ $current_posts = get_posts( $arg );
182
+
183
+
184
+
185
+ return $current_posts;
186
+
187
+
188
+
189
+ }
190
+
191
+ ```

2

質問本文の修正

2015/05/28 08:45

投稿

flat
flat

スコア617

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,23 @@
1
1
  ホームやアーカイブなどでグローバル変数の$postsを参照すると表示中のページにある投稿情報が取得出来ますが、表示されていない2ページ目以降の投稿情報は取得出来ません。
2
2
 
3
- これを2ページ目以降も取得したい時はどの様にしたら良いしょうか
3
+ これを2ページ目以降も取得したいで
4
+
5
+
6
+
7
+ 例えば以下の様な分類があり
8
+
9
+ カテゴリー: 犬(dog)
10
+
11
+ タグ: 犬種
12
+
13
+ カスタム分類: 性別(gender)
14
+
15
+
16
+
17
+ 次の様なURLを開いた場合
18
+
19
+ http://example.com/category/dog/?tag=bulldog&gender=male
20
+
21
+
22
+
23
+ 「犬(dog)」「ブルドッグ(bulldog)」「オス(male)」という条件に一致した投稿の投稿情報のみを取得するにはどうしたら良いでしょうか。

1

明快なタイトルへの変更

2015/05/28 05:23

投稿

flat
flat

スコア617

test CHANGED
@@ -1 +1 @@
1
- 現在表示中のすべての投稿の投稿情報を取得したい
1
+ WordPressで現在表示中のすべての投稿の投稿情報を取得したい
test CHANGED
File without changes