質問編集履歴
8
echo($msg); に修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,6 +32,10 @@
|
|
32
32
|
credentials:"same-origin",
|
33
33
|
body:params
|
34
34
|
}).then(function(response){
|
35
|
+
if (response.ok) {
|
36
|
+
response.text().then(function(text){
|
37
|
+
console.log(text);//A(phpに渡したいデータ)が問題なく表示される
|
38
|
+
});
|
35
39
|
}, function(error){
|
36
40
|
});
|
37
41
|
} else {
|
@@ -44,7 +48,7 @@
|
|
44
48
|
if(check_ajax_referer('my-ajax-nonce', '_nonce', false)){
|
45
49
|
//これ以降が処理されない
|
46
50
|
$msg = filter_input( INPUT_POST , 'msg' );
|
47
|
-
echo($msg);
|
51
|
+
echo($msg);//$msgをsingle.phpで使う方法を知りたい。
|
48
52
|
die();
|
49
53
|
}
|
50
54
|
|
7
タイトル変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
}
|
17
17
|
add_action( 'wp_enqueue_scripts', 'my_ajax', 1 );?>
|
18
18
|
```
|
19
|
-
```javascript
|
19
|
+
```javascript (get_template_directory_uri().'/js/test.js)
|
20
20
|
const data ={
|
21
21
|
ajaxurl: my_ajax_date.ajax_url,
|
22
22
|
action: my_ajax_date.action,
|
@@ -41,10 +41,10 @@
|
|
41
41
|
```php
|
42
42
|
<?php //(function.phpに記載)
|
43
43
|
function test() {
|
44
|
-
if(check_ajax_referer('my-ajax-nonce', '_nonce')){
|
44
|
+
if(check_ajax_referer('my-ajax-nonce', '_nonce', false)){
|
45
45
|
//これ以降が処理されない
|
46
46
|
$msg = filter_input( INPUT_POST , 'msg' );
|
47
|
-
echo(
|
47
|
+
echo($msg);
|
48
48
|
die();
|
49
49
|
}
|
50
50
|
|
6
質問を変更しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
WordPressでJavascriptの変数をPHP
|
1
|
+
WordPressでJavascriptの変数をPHP(singel.php)で使う方法が知りたいです。
|
test
CHANGED
File without changes
|
5
現状を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
WordPressでJavascriptの変数をPHPに受け渡したいので
|
1
|
+
WordPressでJavascriptの変数をPHPに受け渡し、その値をsingle.phpで使うにはどうしたらいいのでしょうか?
|
2
2
|
|
3
3
|
【状況】
|
4
|
-
1. check_ajax_referer()で-1が返ってくる。リクエストURLとtokenを基に認証を行い、invalid(無効)になるため
|
5
|
-
|
4
|
+
1. A(Javascriptから渡ったデータ)をsingle.phpで使う方法がわからない。
|
6
5
|
|
7
6
|
```php
|
8
7
|
<?php
|
@@ -42,11 +41,12 @@
|
|
42
41
|
```php
|
43
42
|
<?php //(function.phpに記載)
|
44
43
|
function test() {
|
45
|
-
check_ajax_referer('my-ajax-nonce', '_nonce')
|
44
|
+
if(check_ajax_referer('my-ajax-nonce', '_nonce')){
|
46
45
|
//これ以降が処理されない
|
47
46
|
$msg = filter_input( INPUT_POST , 'msg' );
|
48
47
|
echo(A(Javascriptから渡ったデータ));
|
49
48
|
die();
|
49
|
+
}
|
50
50
|
|
51
51
|
}
|
52
52
|
add_action('wp_ajax_my-ajax-nonce', 'test');
|
@@ -63,12 +63,6 @@
|
|
63
63
|
check_ajax_referer()の使い方を参照[WordPress, セキュア処理で使うnonce関数のちがい(CSRF対策)](https://tadtadya.com/wordpress-differences-between-secure-nonce-functions/#check_ajax_referer)
|
64
64
|
|
65
65
|
[2022/1/17 追記]
|
66
|
-
現状check_ajax_referer()で認証がうまくいかない状態が続いております。
|
67
|
-
私自身nonceを扱うのが初めてなのですが、URLにパラメーターは必須なのでしょうか?
|
68
|
-
|
69
|
-
最終的には、javascriptのクリックアクションに合わせて変化する値をPHP渡すようにしたいので
|
70
|
-
ページ遷移やリロードは避けたいです。
|
71
|
-
|
72
66
|
もし現状のやり方で不可能なら、CSSのdisplayの変更で行う予定です。
|
73
67
|
|
74
68
|
|
4
javascript params.append("nonce", data._nonce);をparams.append("_nonce", data._nonce);に変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
WordPressでJavascriptの変数をPHPに受け渡したいのですが、うまくいきません。
|
2
2
|
|
3
3
|
【状況】
|
4
|
-
1. check_ajax_referer()で-1が返ってくる。
|
4
|
+
1. check_ajax_referer()で-1が返ってくる。リクエストURLとtokenを基に認証を行い、invalid(無効)になるため
|
5
5
|
2.javascriputからPHPに変数が渡らない(コードのAと記載の部分.
|
6
6
|
|
7
7
|
```php
|
@@ -59,17 +59,11 @@
|
|
59
59
|
wp_create_nonceの使い方を参考:[WordPressでAJAX通信する方法](https://haniwaman.com/wordpress-ajax/)
|
60
60
|
fetchの使い方を参考:[WordPress の Ajax 処理で fetch を試してみる](https://celtislab.net/archives/20180727/ajax-fetch/)
|
61
61
|
ajax用のアクションフックの使い方を参照 [wordpressで使ってみるajaxの基本](https://unskilled.site/wordpress%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8Bajax%E3%81%AE%E5%9F%BA%E6%9C%AC/)
|
62
|
+
check_ajax_referer()の使い方を参照[WordPressのAjaxにNonceを追加](http://dim5.net/wordpress/nonce-ajax.html)
|
63
|
+
check_ajax_referer()の使い方を参照[WordPress, セキュア処理で使うnonce関数のちがい(CSRF対策)](https://tadtadya.com/wordpress-differences-between-secure-nonce-functions/#check_ajax_referer)
|
62
64
|
|
63
65
|
[2022/1/17 追記]
|
64
|
-
javascriputファイルにphpを書いていたため修正いたしました
|
65
|
-
ご指摘ありがとうございます。
|
66
|
-
|
67
|
-
その後Nonceについていろいろ調べながら勧めており
|
68
|
-
1.[WordPressのAjaxにNonceを追加](http://dim5.net/wordpress/nonce-ajax.html)
|
69
|
-
2.[WordPress, セキュア処理で使うnonce関数のちがい(CSRF対策)](https://tadtadya.com/wordpress-differences-between-secure-nonce-functions/#check_ajax_referer)
|
70
|
-
をもとに修正いたしました。
|
71
|
-
|
72
|
-
|
66
|
+
現状check_ajax_referer()で認証がうまくいかない状態が続いております。
|
73
67
|
私自身nonceを扱うのが初めてなのですが、URLにパラメーターは必須なのでしょうか?
|
74
68
|
|
75
69
|
最終的には、javascriptのクリックアクションに合わせて変化する値をPHP渡すようにしたいので
|
3
質問内容を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
WordPressでJavascriptの変数をPHPに受け渡したいのですが、うまくいきません。
|
2
2
|
|
3
3
|
【状況】
|
4
|
-
1.
|
4
|
+
1. check_ajax_referer()で-1が返ってくる。
|
5
5
|
2.javascriputからPHPに変数が渡らない(コードのAと記載の部分.
|
6
6
|
|
7
7
|
```php
|
@@ -27,7 +27,7 @@
|
|
27
27
|
let params = new URLSearchParams();
|
28
28
|
params.append("action", data.action);
|
29
29
|
params.append("msg", "A(phpに渡したいデータ)");
|
30
|
-
params.append("nonce", data._nonce);
|
30
|
+
params.append("_nonce", data._nonce);
|
31
31
|
fetch(data.ajaxurl,{
|
32
32
|
method:'POST',
|
33
33
|
credentials:"same-origin",
|
@@ -42,7 +42,8 @@
|
|
42
42
|
```php
|
43
43
|
<?php //(function.phpに記載)
|
44
44
|
function test() {
|
45
|
-
check_ajax_referer('my-ajax-nonce', '_nonce');
|
45
|
+
check_ajax_referer('my-ajax-nonce', '_nonce'); //-1が返ってくる
|
46
|
+
//これ以降が処理されない
|
46
47
|
$msg = filter_input( INPUT_POST , 'msg' );
|
47
48
|
echo(A(Javascriptから渡ったデータ));
|
48
49
|
die();
|
2
1.admin-ajax.php,wp_create_nonceのHTML出力をwp_localize_scriptに変更。2.nonceの認証方法をcheck_ajax_refererに変更。
test
CHANGED
File without changes
|
test
CHANGED
@@ -71,5 +71,12 @@
|
|
71
71
|
しかし、現状check_ajax_referer()でnonce が無効となり403エラーが発生しております。
|
72
72
|
私自身nonceを扱うのが初めてなのですが、URLにパラメーターは必須なのでしょうか?
|
73
73
|
|
74
|
+
最終的には、javascriptのクリックアクションに合わせて変化する値をPHP渡すようにしたいので
|
75
|
+
ページ遷移やリロードは避けたいです。
|
76
|
+
|
77
|
+
もし現状のやり方で不可能なら、CSSのdisplayの変更で行う予定です。
|
74
78
|
|
75
79
|
|
80
|
+
|
81
|
+
|
82
|
+
|
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,54 +1,55 @@
|
|
1
1
|
WordPressでJavascriptの変数をPHPに受け渡したいのですが、うまくいきません。
|
2
2
|
|
3
3
|
【状況】
|
4
|
-
|
4
|
+
1. javascript 403エラー check_ajax_referer()でnonce が無効となっているのが原因?
|
5
5
|
2.javascriputからPHPに変数が渡らない(コードのAと記載の部分.
|
6
6
|
|
7
7
|
```php
|
8
8
|
<?php
|
9
9
|
//WordPressでXMLHttpRequestでPOST通信するための記述(function.phpに記載)
|
10
|
-
function my_ajax
|
10
|
+
function my_ajax() {
|
11
|
-
|
11
|
+
wp_enqueue_script( 'ajax-script', get_template_directory_uri().'/js/test.js', null, '1.0.0', false );
|
12
|
-
|
12
|
+
wp_localize_script('ajax-script','my_ajax_date',array(
|
13
|
-
|
13
|
+
'ajax_url' => esc_url(admin_url( 'admin-ajax.php')),
|
14
|
+
'nonce' => wp_create_nonce( 'my-ajax-nonce' ),
|
14
|
-
|
15
|
+
'action' => 'my-ajax-nonce',
|
15
|
-
|
16
|
+
));
|
16
|
-
}
|
17
|
+
}
|
17
|
-
add_action( 'wp_
|
18
|
+
add_action( 'wp_enqueue_scripts', 'my_ajax', 1 );?>
|
18
19
|
```
|
19
20
|
```javascript
|
21
|
+
const data ={
|
20
|
-
|
22
|
+
ajaxurl: my_ajax_date.ajax_url,
|
23
|
+
action: my_ajax_date.action,
|
24
|
+
_nonce: my_ajax_date.nonce,
|
25
|
+
};
|
21
|
-
if(window.fetch){
|
26
|
+
if(window.fetch){
|
22
|
-
let params = new URLSearchParams();
|
27
|
+
let params = new URLSearchParams();
|
23
|
-
params.append("action",
|
28
|
+
params.append("action", data.action);
|
24
|
-
params.append("msg",
|
29
|
+
params.append("msg", "A(phpに渡したいデータ)");
|
25
|
-
params.append("nonce",
|
30
|
+
params.append("nonce", data._nonce);
|
26
|
-
fetch(ajaxurl,{
|
31
|
+
fetch(data.ajaxurl,{
|
27
|
-
method:'POST',
|
32
|
+
method:'POST',
|
28
|
-
credentials:"same-origin",
|
33
|
+
credentials:"same-origin",
|
29
|
-
body:params
|
34
|
+
body:params
|
30
|
-
}).then(function(response){
|
35
|
+
}).then(function(response){
|
31
|
-
}, function(error){
|
36
|
+
}, function(error){
|
32
|
-
});
|
37
|
+
});
|
33
|
-
} else {
|
38
|
+
} else {
|
34
|
-
alert('ご使用のブラウザはサポートしていません。Chrome, firefox, Edge等の最新版のブラウザをご使用下さい');
|
39
|
+
alert('ご使用のブラウザはサポートしていません。Chrome, firefox, Edge等の最新版のブラウザをご使用下さい');
|
35
|
-
}
|
40
|
+
}
|
36
|
-
}
|
37
41
|
```
|
38
42
|
```php
|
39
43
|
<?php //(function.phpに記載)
|
40
|
-
}
|
41
|
-
add_action( 'wp_head', 'my_ajaxurl', 1 );
|
42
44
|
function test() {
|
43
|
-
$nonce = $_REQUEST['nonce'];
|
44
|
-
|
45
|
+
check_ajax_referer('my-ajax-nonce', '_nonce');
|
45
|
-
|
46
|
+
$msg = filter_input( INPUT_POST , 'msg' );
|
46
47
|
echo(A(Javascriptから渡ったデータ));
|
47
48
|
die();
|
49
|
+
|
48
|
-
|
50
|
+
}
|
49
|
-
}
|
50
|
-
|
51
|
+
add_action('wp_ajax_my-ajax-nonce', 'test');
|
51
|
-
|
52
|
+
add_action('wp_ajax_nopriv_my-ajax-nonce', 'test');
|
52
53
|
?>
|
53
54
|
|
54
55
|
```
|
@@ -57,3 +58,18 @@
|
|
57
58
|
wp_create_nonceの使い方を参考:[WordPressでAJAX通信する方法](https://haniwaman.com/wordpress-ajax/)
|
58
59
|
fetchの使い方を参考:[WordPress の Ajax 処理で fetch を試してみる](https://celtislab.net/archives/20180727/ajax-fetch/)
|
59
60
|
ajax用のアクションフックの使い方を参照 [wordpressで使ってみるajaxの基本](https://unskilled.site/wordpress%E3%81%A7%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8Bajax%E3%81%AE%E5%9F%BA%E6%9C%AC/)
|
61
|
+
|
62
|
+
[2022/1/17 追記]
|
63
|
+
javascriputファイルにphpを書いていたため修正いたしました
|
64
|
+
ご指摘ありがとうございます。
|
65
|
+
|
66
|
+
その後Nonceについていろいろ調べながら勧めており
|
67
|
+
1.[WordPressのAjaxにNonceを追加](http://dim5.net/wordpress/nonce-ajax.html)
|
68
|
+
2.[WordPress, セキュア処理で使うnonce関数のちがい(CSRF対策)](https://tadtadya.com/wordpress-differences-between-secure-nonce-functions/#check_ajax_referer)
|
69
|
+
をもとに修正いたしました。
|
70
|
+
|
71
|
+
しかし、現状check_ajax_referer()でnonce が無効となり403エラーが発生しております。
|
72
|
+
私自身nonceを扱うのが初めてなのですが、URLにパラメーターは必須なのでしょうか?
|
73
|
+
|
74
|
+
|
75
|
+
|