質問編集履歴
16
追記_2022/02/26 22:45
title
CHANGED
File without changes
|
body
CHANGED
@@ -76,7 +76,8 @@
|
|
76
76
|
|
77
77
|
}
|
78
78
|
```
|
79
|
+
### 追記_2022/02/26 22:45
|
80
|
+
functions.phpが3回、header.phpが2回、という違いについてですが、これは私が別途AJAXを実行しているためでした。この処理をなくしたらfunctions.phpも2回になりました。tabuuさんありがとうございます。
|
81
|
+
質問内容には特に変わりございません。
|
79
82
|
|
80
83
|
|
81
|
-
|
82
|
-
|
15
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
```
|
15
15
|
|
16
16
|
### 調べたこと
|
17
|
-
ググると類似の質問が2つあり、
|
17
|
+
ググると類似の質問が2つあり、functions.phpを複数回読むというのはWordPressの平常運転であると知りましたが、解決方法の記載はありませんでした。
|
18
18
|
> [WordPressで、functions.php が複数回読まれるのは正常なのでしょうか?](https://teratail.com/questions/284189)
|
19
19
|
> [WordPressにおける呼び出しの重複?](https://teratail.com/questions/204756)
|
20
20
|
|
14
関数名を変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -62,8 +62,8 @@
|
|
62
62
|
これは絶対にやりたくないのですが、functions.phpで以下を実行し、フロントでXMLHttpRequestを投げてis_processedをfalseに戻す。という方法ならなんとか解決はできますが、ここまで面倒なことをしなければならないでしょうか???
|
63
63
|
```php
|
64
64
|
// functioins.php
|
65
|
-
add_action( 'init', '
|
65
|
+
add_action( 'init', 'once_process' );
|
66
|
-
function
|
66
|
+
function once_process() {
|
67
67
|
|
68
68
|
if( get_option('is_processed') === false ){
|
69
69
|
|
13
wp_insert_postを簡略化
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,12 +8,7 @@
|
|
8
8
|
### 該当のソースコード
|
9
9
|
```php
|
10
10
|
// functioins.php
|
11
|
-
$my_post = array(
|
12
|
-
|
11
|
+
wp_insert_post( [ 'post_title'=>'a', 'post_content'=>'b' ] );
|
13
|
-
'post_content' => 'This is my post.',
|
14
|
-
'post_author' => 1
|
15
|
-
);
|
16
|
-
wp_insert_post( $my_post );
|
17
12
|
|
18
13
|
error_log('この文はサイト読み込みにおいて3回表示されてしまう');
|
19
14
|
```
|
@@ -27,12 +22,7 @@
|
|
27
22
|
なので自力で解決するしかないと思い、1回しか読み込まれないテンプレートを求めて同じコードを試しにheader.phpに書いてみたところ、3回ではなく2回になりました。(1回しか読み込まれないテンプレートはないのでしょうか?)
|
28
23
|
```php
|
29
24
|
// header.php
|
30
|
-
$my_post = array(
|
31
|
-
|
25
|
+
wp_insert_post( [ 'post_title'=>'a', 'post_content'=>'b' ] );
|
32
|
-
'post_content' => 'This is my post.',
|
33
|
-
'post_author' => 1
|
34
|
-
);
|
35
|
-
wp_insert_post( $my_post );
|
36
26
|
|
37
27
|
error_log('この文はサイト読み込みにおいて2回表示されてしまう');
|
38
28
|
```
|
@@ -48,12 +38,7 @@
|
|
48
38
|
// header.php
|
49
39
|
global $is_processed;
|
50
40
|
if( $is_processed === false ){
|
51
|
-
$my_post = array(
|
52
|
-
|
41
|
+
wp_insert_post( [ 'post_title'=>'a', 'post_content'=>'b' ] );
|
53
|
-
'post_content' => 'This is my post.',
|
54
|
-
'post_author' => 1
|
55
|
-
);
|
56
|
-
wp_insert_post( $my_post );
|
57
42
|
|
58
43
|
$is_processed = true; // wp_insert_postは1回しか実行しないでほしい → 効果なし
|
59
44
|
|
@@ -68,12 +53,7 @@
|
|
68
53
|
```
|
69
54
|
```php
|
70
55
|
// insert.php
|
71
|
-
$my_post = array(
|
72
|
-
|
56
|
+
wp_insert_post( [ 'post_title'=>'a', 'post_content'=>'b' ] );
|
73
|
-
'post_content' => 'This is my post.',
|
74
|
-
'post_author' => 1
|
75
|
-
);
|
76
|
-
wp_insert_post( $my_post );
|
77
57
|
|
78
58
|
error_log('require_onceは効果なく、この文はサイト読み込みにおいて2回表示されてしまう');
|
79
59
|
```
|
@@ -87,12 +67,7 @@
|
|
87
67
|
|
88
68
|
if( get_option('is_processed') === false ){
|
89
69
|
|
90
|
-
$my_post = array(
|
91
|
-
|
70
|
+
wp_insert_post( [ 'post_title'=>'a', 'post_content'=>'b' ] );
|
92
|
-
'post_content' => 'This is my post.',
|
93
|
-
'post_author' => 1
|
94
|
-
);
|
95
|
-
wp_insert_post( $my_post );
|
96
71
|
|
97
72
|
update_option( 'is_processed', true );
|
98
73
|
|
12
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
WordPressです。サイト読み込みにおいて、テーマ内ファイルに書いた関数を1回しか実行させない方法を知りたいです。
|
4
4
|
|
5
5
|
### 発生している問題
|
6
|
-
wp_insert_postをfunctions.phpに書くと、なぜか3回実行され、3件のレコードがINSERTされてしまいます。
|
6
|
+
例えばwp_insert_postをfunctions.phpに書くと、なぜか3回実行され、3件のレコードがINSERTされてしまいます。(wp_insert_postに限りません)
|
7
7
|
|
8
8
|
### 該当のソースコード
|
9
9
|
```php
|
11
目を背けたくなるほど面倒な解決策を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -78,4 +78,30 @@
|
|
78
78
|
error_log('require_onceは効果なく、この文はサイト読み込みにおいて2回表示されてしまう');
|
79
79
|
```
|
80
80
|
|
81
|
+
### 目を背けたくなるほど面倒な解決策
|
82
|
+
これは絶対にやりたくないのですが、functions.phpで以下を実行し、フロントでXMLHttpRequestを投げてis_processedをfalseに戻す。という方法ならなんとか解決はできますが、ここまで面倒なことをしなければならないでしょうか???
|
83
|
+
```php
|
84
|
+
// functioins.php
|
85
|
+
add_action( 'init', 'update_is_processed' );
|
86
|
+
function update_is_processed() {
|
81
87
|
|
88
|
+
if( get_option('is_processed') === false ){
|
89
|
+
|
90
|
+
$my_post = array(
|
91
|
+
'post_title' => 'My post',
|
92
|
+
'post_content' => 'This is my post.',
|
93
|
+
'post_author' => 1
|
94
|
+
);
|
95
|
+
wp_insert_post( $my_post );
|
96
|
+
|
97
|
+
update_option( 'is_processed', true );
|
98
|
+
|
99
|
+
error_log('is_processedは効果あり、この文はサイト読み込みにおいて1回だけの表示となる');
|
100
|
+
}
|
101
|
+
|
102
|
+
}
|
103
|
+
```
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
10
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
```
|
20
20
|
|
21
21
|
### 調べたこと
|
22
|
-
ググると類似の質問
|
22
|
+
ググると類似の質問が2つあり、この挙動はWordPressの平常運転であると知りましたが、解決方法の記載はありませんでした。
|
23
23
|
> [WordPressで、functions.php が複数回読まれるのは正常なのでしょうか?](https://teratail.com/questions/284189)
|
24
24
|
> [WordPressにおける呼び出しの重複?](https://teratail.com/questions/204756)
|
25
25
|
|
@@ -67,7 +67,7 @@
|
|
67
67
|
require_once('insert.php'); // wp_insert_postは1回しか実行しないでほしい → 効果なし
|
68
68
|
```
|
69
69
|
```php
|
70
|
-
// insert.php
|
70
|
+
// insert.php
|
71
71
|
$my_post = array(
|
72
72
|
'post_title' => 'My post',
|
73
73
|
'post_content' => 'This is my post.',
|
9
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
WordPressです。サイト読み込みにおいて、テーマ内ファイルに書いた関数を1回しか実行させない方法を知りたいです。
|
4
4
|
|
5
|
-
### 発生している問題
|
5
|
+
### 発生している問題
|
6
6
|
wp_insert_postをfunctions.phpに書くと、なぜか3回実行され、3件のレコードがINSERTされてしまいます。
|
7
7
|
|
8
8
|
### 該当のソースコード
|
@@ -14,6 +14,7 @@
|
|
14
14
|
'post_author' => 1
|
15
15
|
);
|
16
16
|
wp_insert_post( $my_post );
|
17
|
+
|
17
18
|
error_log('この文はサイト読み込みにおいて3回表示されてしまう');
|
18
19
|
```
|
19
20
|
|
8
試したこを3を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
'post_author' => 1
|
15
15
|
);
|
16
16
|
wp_insert_post( $my_post );
|
17
|
+
error_log('この文はサイト読み込みにおいて3回表示されてしまう');
|
17
18
|
```
|
18
19
|
|
19
20
|
### 調べたこと
|
@@ -31,10 +32,12 @@
|
|
31
32
|
'post_author' => 1
|
32
33
|
);
|
33
34
|
wp_insert_post( $my_post );
|
35
|
+
|
36
|
+
error_log('この文はサイト読み込みにおいて2回表示されてしまう');
|
34
37
|
```
|
35
38
|
|
36
39
|
### 試したこと2
|
37
|
-
さらに思いついた方法は、次のグローバル変数でフラグを立てる方法(フラグがfalseの場合だけ実行し、
|
40
|
+
さらに思いついた方法は、次のグローバル変数でフラグを立てる方法(フラグがfalseの場合だけ実行し、1回実行したらtrueに変更する方法)ですが、これも2回実行されてしまいました。
|
38
41
|
|
39
42
|
```php
|
40
43
|
// functioins.php
|
@@ -51,11 +54,27 @@
|
|
51
54
|
);
|
52
55
|
wp_insert_post( $my_post );
|
53
56
|
|
54
|
-
$is_processed = true; //
|
57
|
+
$is_processed = true; // wp_insert_postは1回しか実行しないでほしい → 効果なし
|
55
58
|
|
56
59
|
error_log('$is_processedのフラグは効果なく、この文はサイト読み込みにおいて2回表示されてしまう');
|
57
60
|
}
|
58
61
|
```
|
62
|
+
### 試したこと3
|
63
|
+
さらにrequire_onceも試しましたがやはり2回実行されました…
|
64
|
+
```php
|
65
|
+
// header.php
|
66
|
+
require_once('insert.php'); // wp_insert_postは1回しか実行しないでほしい → 効果なし
|
67
|
+
```
|
68
|
+
```php
|
69
|
+
// insert.php'
|
70
|
+
$my_post = array(
|
71
|
+
'post_title' => 'My post',
|
72
|
+
'post_content' => 'This is my post.',
|
73
|
+
'post_author' => 1
|
74
|
+
);
|
75
|
+
wp_insert_post( $my_post );
|
59
76
|
|
77
|
+
error_log('require_onceは効果なく、この文はサイト読み込みにおいて2回表示されてしまう');
|
78
|
+
```
|
60
79
|
|
61
80
|
|
7
構成変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,12 +3,11 @@
|
|
3
3
|
WordPressです。サイト読み込みにおいて、テーマ内ファイルに書いた関数を1回しか実行させない方法を知りたいです。
|
4
4
|
|
5
5
|
### 発生している問題・エラーメッセージ
|
6
|
-
|
6
|
+
wp_insert_postをfunctions.phpに書くと、なぜか3回実行され、3件のレコードがINSERTされてしまいます。
|
7
7
|
|
8
|
-
|
9
8
|
### 該当のソースコード
|
10
|
-
###### functions.php
|
11
9
|
```php
|
10
|
+
// functioins.php
|
12
11
|
$my_post = array(
|
13
12
|
'post_title' => 'My post',
|
14
13
|
'post_content' => 'This is my post.',
|
@@ -17,14 +16,25 @@
|
|
17
16
|
wp_insert_post( $my_post );
|
18
17
|
```
|
19
18
|
|
20
|
-
###
|
19
|
+
### 調べたこと
|
21
|
-
|
20
|
+
ググると類似の質問を2つあり、この挙動はWordPressの平常運転であると知りましたが、解決方法の記載はありませんでした。
|
22
21
|
> [WordPressで、functions.php が複数回読まれるのは正常なのでしょうか?](https://teratail.com/questions/284189)
|
23
22
|
> [WordPressにおける呼び出しの重複?](https://teratail.com/questions/204756)
|
24
23
|
|
24
|
+
### 試したこと1
|
25
|
-
なので自力で解決するしかないと思い、1回しか読み込まれないテンプレートを求めて試しにheader.phpに書いてみたところ、3回ではなく2回になりました。(1回しか読み込まれないテンプレートはないのでしょうか?)
|
25
|
+
なので自力で解決するしかないと思い、1回しか読み込まれないテンプレートを求めて同じコードを試しにheader.phpに書いてみたところ、3回ではなく2回になりました。(1回しか読み込まれないテンプレートはないのでしょうか?)
|
26
|
+
```php
|
27
|
+
// header.php
|
28
|
+
$my_post = array(
|
29
|
+
'post_title' => 'My post',
|
30
|
+
'post_content' => 'This is my post.',
|
31
|
+
'post_author' => 1
|
32
|
+
);
|
33
|
+
wp_insert_post( $my_post );
|
34
|
+
```
|
26
35
|
|
36
|
+
### 試したこと2
|
27
|
-
さらに思いついた方法は、次の
|
37
|
+
さらに思いついた方法は、次のグローバル変数でフラグを立てる方法(フラグがfalseの場合だけ実行し、1回実行したらtrueに変更する方法)ですが、これも2回実行されてしまいました。
|
28
38
|
|
29
39
|
```php
|
30
40
|
// functioins.php
|
6
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
|
44
44
|
$is_processed = true; // もうwp_insert_postは実行しないでほしい → 効果なし
|
45
45
|
|
46
|
-
error_log('$is_processedのフラグは効果なく、この文はサイト読み込みにおいて2回表示
|
46
|
+
error_log('$is_processedのフラグは効果なく、この文はサイト読み込みにおいて2回表示されてしまう');
|
47
47
|
}
|
48
48
|
```
|
49
49
|
|
5
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -22,9 +22,9 @@
|
|
22
22
|
> [WordPressで、functions.php が複数回読まれるのは正常なのでしょうか?](https://teratail.com/questions/284189)
|
23
23
|
> [WordPressにおける呼び出しの重複?](https://teratail.com/questions/204756)
|
24
24
|
|
25
|
-
なので自力で解決するしかないと思い、1回しか
|
25
|
+
なので自力で解決するしかないと思い、1回しか読み込まれないテンプレートを求めて試しにheader.phpに書いてみたところ、3回ではなく2回になりました。(1回しか読み込まれないテンプレートはないのでしょうか?)
|
26
26
|
|
27
|
-
さらに思いついた方法は、次のように、グローバル変数でフラグを立てておくこと(フラグが
|
27
|
+
さらに思いついた方法は、次のように、グローバル変数でフラグを立てておくこと(フラグがfalseの場合だけ実行し、1回実行したらtrueに変更しておく)ですが、これも同様で2回実行されてしまいました。
|
28
28
|
|
29
29
|
```php
|
30
30
|
// functioins.php
|
@@ -41,7 +41,9 @@
|
|
41
41
|
);
|
42
42
|
wp_insert_post( $my_post );
|
43
43
|
|
44
|
-
$is_processed = true; // もうwp_insert_postは実行しないでほしい
|
44
|
+
$is_processed = true; // もうwp_insert_postは実行しないでほしい → 効果なし
|
45
|
+
|
46
|
+
error_log('$is_processedのフラグは効果なく、この文はサイト読み込みにおいて2回表示回表示されてしまう');
|
45
47
|
}
|
46
48
|
```
|
47
49
|
|
4
グローバル変数を用いた方法を記載
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
WordPressでテーマ内ファイルに書いた関数を
|
3
|
+
WordPressです。サイト読み込みにおいて、テーマ内ファイルに書いた関数を1回しか実行させない方法を知りたいです。
|
4
4
|
|
5
5
|
### 発生している問題・エラーメッセージ
|
6
6
|
WordPressでwp_insert_postをfunctions.phpに書くと、なぜか3回実行され、3件のレコードがINSERTされてしまいます。
|
@@ -10,9 +10,9 @@
|
|
10
10
|
###### functions.php
|
11
11
|
```php
|
12
12
|
$my_post = array(
|
13
|
-
|
13
|
+
'post_title' => 'My post',
|
14
|
-
|
14
|
+
'post_content' => 'This is my post.',
|
15
|
-
|
15
|
+
'post_author' => 1
|
16
16
|
);
|
17
17
|
wp_insert_post( $my_post );
|
18
18
|
```
|
@@ -22,13 +22,28 @@
|
|
22
22
|
> [WordPressで、functions.php が複数回読まれるのは正常なのでしょうか?](https://teratail.com/questions/284189)
|
23
23
|
> [WordPressにおける呼び出しの重複?](https://teratail.com/questions/204756)
|
24
24
|
|
25
|
-
なので自力で解決するしかないと思い、1回しか実行しない場所を求めてheader.phpに書いてみたところ、3回ではなく2回になりました。
|
25
|
+
なので自力で解決するしかないと思い、1回しか実行しない場所を求めてheader.phpに書いてみたところ、3回ではなく2回になりました。(1回だけ読み込まれるテンプレートはないのでしょうか?)
|
26
26
|
|
27
|
-
最終的に思いついた解決策としては、
|
28
|
-
1. index.phpでwp_insert_postすることと(index.phpならさすがに1回しか実行されない)
|
29
|
-
|
27
|
+
さらに思いついた方法は、次のように、グローバル変数でフラグを立てておくこと(フラグがtrueの場合だけ実行し、1回実行したらfalseに変更しておく)ですが、これも同様で2回実行されてしまいました。
|
30
|
-
です。が、しかしどう考えてもそれらの方法には違和感があるので、正しい方法があるのではないかと思っています。
|
31
28
|
|
29
|
+
```php
|
30
|
+
// functioins.php
|
31
|
+
$is_processed = false;
|
32
|
+
```
|
33
|
+
```php
|
34
|
+
// header.php
|
35
|
+
global $is_processed;
|
36
|
+
if( $is_processed === false ){
|
32
|
-
|
37
|
+
$my_post = array(
|
38
|
+
'post_title' => 'My post',
|
39
|
+
'post_content' => 'This is my post.',
|
40
|
+
'post_author' => 1
|
41
|
+
);
|
42
|
+
wp_insert_post( $my_post );
|
33
43
|
|
44
|
+
$is_processed = true; // もうwp_insert_postは実行しないでほしい
|
45
|
+
}
|
46
|
+
```
|
34
47
|
|
48
|
+
|
49
|
+
|
3
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
最終的に思いついた解決策としては、
|
28
28
|
1. index.phpでwp_insert_postすることと(index.phpならさすがに1回しか実行されない)
|
29
|
-
2. グローバル
|
29
|
+
2. グローバル変数でフラグを立てておくこと(フラグがtrueの場合だけ実行し、1回実行したらfalseに変更しておく)
|
30
30
|
です。が、しかしどう考えてもそれらの方法には違和感があるので、正しい方法があるのではないかと思っています。
|
31
31
|
|
32
32
|
ご存じの方よろしくお願い致します。
|
2
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -18,13 +18,13 @@
|
|
18
18
|
```
|
19
19
|
|
20
20
|
### 試したこと
|
21
|
-
検索で類似の質問を2つ見つけましたが解決方法の記載
|
21
|
+
検索で類似の質問を2つ見つけたところ、この挙動はWordPressの平常運転であると知りましたが、解決方法の記載はありませんでした。
|
22
22
|
> [WordPressで、functions.php が複数回読まれるのは正常なのでしょうか?](https://teratail.com/questions/284189)
|
23
23
|
> [WordPressにおける呼び出しの重複?](https://teratail.com/questions/204756)
|
24
24
|
|
25
25
|
なので自力で解決するしかないと思い、1回しか実行しない場所を求めてheader.phpに書いてみたところ、3回ではなく2回になりました。
|
26
26
|
|
27
|
-
思いついた解決策としては、
|
27
|
+
最終的に思いついた解決策としては、
|
28
28
|
1. index.phpでwp_insert_postすることと(index.phpならさすがに1回しか実行されない)
|
29
29
|
2. グローバル関数でフラグを立てておくこと(フラグがtrueの場合だけ実行し、1回実行したらfalseに変更しておく)
|
30
30
|
です。が、しかしどう考えてもそれらの方法には違和感があるので、正しい方法があるのではないかと思っています。
|
1
解決策を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -24,7 +24,10 @@
|
|
24
24
|
|
25
25
|
なので自力で解決するしかないと思い、1回しか実行しない場所を求めてheader.phpに書いてみたところ、3回ではなく2回になりました。
|
26
26
|
|
27
|
+
思いついた解決策としては、
|
28
|
+
1. index.phpでwp_insert_postすることと(index.phpならさすがに1回しか実行されない)
|
29
|
+
2. グローバル関数でフラグを立てておくこと(フラグがtrueの場合だけ実行し、1回実行したらfalseに変更しておく)
|
27
|
-
|
30
|
+
です。が、しかしどう考えてもそれらの方法には違和感があるので、正しい方法があるのではないかと思っています。
|
28
31
|
|
29
32
|
ご存じの方よろしくお願い致します。
|
30
33
|
|