回答編集履歴
3
誤字訂正
test
CHANGED
@@ -138,17 +138,11 @@
|
|
138
138
|
|
139
139
|
###試したコード2への返答
|
140
140
|
|
141
|
-
JSはチェックしていませんでした。気が回らず申し訳ございません。以下2点ご修正ください。
|
142
|
-
|
143
141
|
|
144
142
|
|
145
143
|
【1】
|
146
144
|
|
147
|
-
まず「url」の値は「サイトURL/wp-admin/admin-ajax.php」です。
|
145
|
+
まず「url」の値は「サイトURL/wp-admin/admin-ajax.php」で、次のようにPHPから出力しておくのが一般的な方法です。functions.phpの最後に記述しておいてください。
|
148
|
-
|
149
|
-
しかし次のようにPHPから出力しておくのが一般的な方法です。
|
150
|
-
|
151
|
-
functions.phpの最後に記述しておいてください。
|
152
146
|
|
153
147
|
```PHP
|
154
148
|
|
@@ -158,7 +152,7 @@
|
|
158
152
|
|
159
153
|
<script>
|
160
154
|
|
161
|
-
var ajaxUrl = '<?php echo admin_url(
|
155
|
+
var ajaxUrl = '<?php echo admin_url('admin-ajax.php'); ?>';
|
162
156
|
|
163
157
|
</script>
|
164
158
|
|
@@ -170,8 +164,6 @@
|
|
170
164
|
|
171
165
|
```
|
172
166
|
|
173
|
-
|
174
|
-
|
175
167
|
【2】
|
176
168
|
|
177
169
|
次に送信値にはアクション名(dk_get_case)を入れてください。
|
@@ -192,9 +184,9 @@
|
|
192
184
|
|
193
185
|
data: {
|
194
186
|
|
195
|
-
|
187
|
+
url_category: url_category,
|
196
|
-
|
188
|
+
|
197
|
-
|
189
|
+
action: "dk_get_case"
|
198
190
|
|
199
191
|
},
|
200
192
|
|
@@ -215,3 +207,7 @@
|
|
215
207
|
});
|
216
208
|
|
217
209
|
```
|
210
|
+
|
211
|
+
【3】
|
212
|
+
|
213
|
+
最後に`dk_get_case`の最後は`die();`してください。
|
2
試したコード2への返答
test
CHANGED
@@ -104,7 +104,7 @@
|
|
104
104
|
|
105
105
|
|
106
106
|
|
107
|
-
###試した
|
107
|
+
###試したコード1への返答
|
108
108
|
|
109
109
|
失礼致しました。上記の(1)を下記のようにすれば実現できると思います。
|
110
110
|
|
@@ -133,3 +133,85 @@
|
|
133
133
|
```
|
134
134
|
|
135
135
|
尚`$url`ですが、`get_posts`を通せば平気ですが、他のSQL生成で用いるのであれば[SQLインジェクション](https://www.shadan-kun.com/waf/sql_injection/)に注意し適切にエスケープしてください。
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
###試したコード2への返答
|
140
|
+
|
141
|
+
JSはチェックしていませんでした。気が回らず申し訳ございません。以下2点ご修正ください。
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
【1】
|
146
|
+
|
147
|
+
まず「url」の値は「サイトURL/wp-admin/admin-ajax.php」です。
|
148
|
+
|
149
|
+
しかし次のようにPHPから出力しておくのが一般的な方法です。
|
150
|
+
|
151
|
+
functions.phpの最後に記述しておいてください。
|
152
|
+
|
153
|
+
```PHP
|
154
|
+
|
155
|
+
function add_my_ajaxurl() {
|
156
|
+
|
157
|
+
?>
|
158
|
+
|
159
|
+
<script>
|
160
|
+
|
161
|
+
var ajaxUrl = '<?php echo admin_url( 'admin-ajax.php'); ?>';
|
162
|
+
|
163
|
+
</script>
|
164
|
+
|
165
|
+
<?php
|
166
|
+
|
167
|
+
}
|
168
|
+
|
169
|
+
add_action( 'wp_head', 'add_my_ajaxurl', 1 );
|
170
|
+
|
171
|
+
```
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
【2】
|
176
|
+
|
177
|
+
次に送信値にはアクション名(dk_get_case)を入れてください。
|
178
|
+
|
179
|
+
あと一応errorとsucessは非推奨なので、failとdoneがいいと思います。
|
180
|
+
|
181
|
+
```jQuery
|
182
|
+
|
183
|
+
jQuery(document).ready(function () {
|
184
|
+
|
185
|
+
var url_category = window.location.href;
|
186
|
+
|
187
|
+
$.ajax({
|
188
|
+
|
189
|
+
url: ajaxUrl, // 【1】によってPHPから出力されているものを使う
|
190
|
+
|
191
|
+
type: "POST",
|
192
|
+
|
193
|
+
data: {
|
194
|
+
|
195
|
+
"url_category": url_category,
|
196
|
+
|
197
|
+
"action": "dk_get_case"
|
198
|
+
|
199
|
+
},
|
200
|
+
|
201
|
+
}).done(function(responce) {
|
202
|
+
|
203
|
+
// 成功
|
204
|
+
|
205
|
+
}).fail(function(XMLHttpRequest, textStatus, errorThrown) {
|
206
|
+
|
207
|
+
// エラー
|
208
|
+
|
209
|
+
}).always(function() {
|
210
|
+
|
211
|
+
// donefailに関係なく実行したい処理
|
212
|
+
|
213
|
+
});
|
214
|
+
|
215
|
+
});
|
216
|
+
|
217
|
+
```
|
1
「試したことへの返答」を追記
test
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
###最初の回答
|
2
|
+
|
1
3
|
未検証ですが、
|
2
4
|
|
3
5
|
|
@@ -20,29 +22,41 @@
|
|
20
22
|
|
21
23
|
```php
|
22
24
|
|
25
|
+
add_action('wp_ajax_get_case', 'dk_get_case');
|
26
|
+
|
27
|
+
add_action('wp_ajax_nopriv_get_case', 'dk_get_case');
|
28
|
+
|
29
|
+
function dk_get_case() {
|
30
|
+
|
31
|
+
$headers['Access-Control-Allow-Origin'] = '*';
|
32
|
+
|
33
|
+
$return = ['status' => false, 'data' => [], 'message' => ''];
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
// (1)現在のURLを取得
|
38
|
+
|
39
|
+
$http = is_ssl() ? 'https' : 'http' . '://';
|
40
|
+
|
41
|
+
$url = $http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
// (2)URLから'page1'などの文字列を取得
|
46
|
+
|
47
|
+
$keys = parse_url($url);
|
48
|
+
|
49
|
+
$path = explode("/", $keys['path']);
|
50
|
+
|
51
|
+
$terms = $path[2];
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
$case_clinics = [1,2,3,4];
|
56
|
+
|
23
57
|
foreach($case_clinics as $key => $case_clinic){
|
24
58
|
|
25
59
|
|
26
|
-
|
27
|
-
// (1)現在のURLを取得
|
28
|
-
|
29
|
-
$http = is_ssl() ? 'https' : 'http' . '://';
|
30
|
-
|
31
|
-
$url = $http . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
// (2)URLから'page1'などの文字列を取得
|
36
|
-
|
37
|
-
$keys = parse_url($url);
|
38
|
-
|
39
|
-
$path = explode("/", $keys['path']);
|
40
|
-
|
41
|
-
$terms = $path[2];
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
// 元の処理
|
46
60
|
|
47
61
|
$dk_posts = get_posts(
|
48
62
|
|
@@ -87,3 +101,35 @@
|
|
87
101
|
// 以下略
|
88
102
|
|
89
103
|
```
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
###試したことへの返答
|
108
|
+
|
109
|
+
失礼致しました。上記の(1)を下記のようにすれば実現できると思います。
|
110
|
+
|
111
|
+
```
|
112
|
+
|
113
|
+
add_action('wp_ajax_get_case', 'dk_get_case');
|
114
|
+
|
115
|
+
add_action('wp_ajax_nopriv_get_case', 'dk_get_case');
|
116
|
+
|
117
|
+
function dk_get_case() {
|
118
|
+
|
119
|
+
$headers['Access-Control-Allow-Origin'] = '*';
|
120
|
+
|
121
|
+
$return = ['status' => false, 'data' => [], 'message' => ''];
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
// (1)現在のURLを取得
|
126
|
+
|
127
|
+
$url = $_POST['url'];
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
// 以下略
|
132
|
+
|
133
|
+
```
|
134
|
+
|
135
|
+
尚`$url`ですが、`get_posts`を通せば平気ですが、他のSQL生成で用いるのであれば[SQLインジェクション](https://www.shadan-kun.com/waf/sql_injection/)に注意し適切にエスケープしてください。
|