質問編集履歴

7

修正

2021/12/07 13:33

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- ワードプレスの「flush_rewrite_rules();」の使方につ
1
+ 内容がまとまってので投稿し直します
test CHANGED
@@ -1,289 +1 @@
1
- ### 前提・実現いこ
2
-
3
-
4
-
5
- 勉強でカスタム投稿タイプを使ったプラグインを作っています。
6
-
7
- (最新バージョンのワードプレスで試しています:ver5.8.2)
8
-
9
-
10
-
11
- できればプラグインを有効化したタイミングで
12
-
13
- 「flush_rewrite_rules」を実行して(パーマリンクの更新を押さず)
14
-
15
- そのままURLが反映されるようにしたいです。
16
-
17
-
18
-
19
- 今は「flush_rewrite_rules」がうまく動いていないので
20
-
21
- プラグインを有効化しただけではページを認識しません。
22
-
23
-
24
-
25
- ### 発生している問題・エラーメッセージ
26
-
27
-
28
-
29
- 以下のように「register_post_type」の直後に
30
-
31
- flush_rewrite_rulesを書けば確かに反映はされます。
32
-
33
-
34
-
35
- ただ、ワードプレスの公式(?)マニュアルサイトや個人ブログなどには
36
-
37
- 「flush_rewirte_rulesを毎回実行するのはNG」と書かれていました。
38
-
39
- (怒っている人までいたので書き方に注意しなければならない?)
40
-
41
-
42
-
43
- ```PHP
44
-
45
- add_action('init', 'add_my_post_type');
46
-
47
- function add_my_post_type() {
48
-
49
- $post_type = 'works';
50
-
51
- $labels = array(
52
-
53
- 'name' => _x('works', 'works'),
54
-
55
- );
56
-
57
- $args = array(
58
-
59
- 'labels' => $labels,
60
-
61
- 'public' => true,
62
-
63
- 'publicly_queryable' => true,
64
-
65
- 'show_ui' => true,
66
-
67
- 'show_in_menu' => true,
68
-
69
- 'query_var' => true,
70
-
71
- 'capability_type' => 'post',
72
-
73
- 'has_archive' => true,
74
-
75
- 'hierarchical' => false,
76
-
77
- 'menu_position' => null,
78
-
79
- 'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments')
80
-
81
- );
82
-
83
- register_post_type($post_type, $args);
84
-
85
- // リライトルールを更新する
86
-
87
- flush_rewrite_rules(); // ← 追加
88
-
89
- }
90
-
91
- ```
92
-
93
- マニュアルには以下内容が書かれてありました。
94
-
95
- このように書けば毎回は実行されないようです。
96
-
97
- (プラグインの有効化のときだけ実行される…?)
98
-
99
-
100
-
101
- ### 該当のソースコード
102
-
103
-
104
-
105
- ```PHP
106
-
107
- add_action( 'init', 'my_cpt_init' );
108
-
109
- function my_cpt_init() {
110
-
111
- register_post_type( ... );
112
-
113
- }
114
-
115
-
116
-
117
- function my_rewrite_flush() {
118
-
119
- // 最初に、上記の関数(my_cpt_init)でカスタム投稿タイプ(CPT)を「追加」する。
120
-
121
- // 注意:ここで「追加」と括弧を付けて書いたのは、まだ CPT がデータベースに登録されないため。
122
-
123
- // 後ほど、この CPT の投稿を追加したときに初めて
124
-
125
- // 投稿エントリーの post_type カラム(データベースの列)からのみ CPT が参照される。
126
-
127
- my_cpt_init();
128
-
129
-
130
-
131
- // 重要:下記はこの例のプラグイン有効化フックの中で *のみ* 実行される!
132
-
133
- // これをページ読み込みの度に呼び出すことは *絶対に行ってはならない*!!
134
-
135
- flush_rewrite_rules();
136
-
137
- }
138
-
139
- register_activation_hook( __FILE__, 'my_rewrite_flush' );
140
-
141
- ```
142
-
143
-
144
-
145
- ### 試したこと
146
-
147
-
148
-
149
- 上記に習って以下のコードを試してみましたが、なぜか動きません。
150
-
151
-
152
-
153
- プラグインの有効化時しか実行されないのが理想的?なので
154
-
155
- 詳しい人がいればコードのどこが悪いのか教えて欲しいです。
156
-
157
-
158
-
159
- ```PHP
160
-
161
- add_action('init', 'add_my_post_type');
162
-
163
- function add_my_post_type() {
164
-
165
- $post_type = 'works';
166
-
167
- $labels = array(
168
-
169
- 'name' => _x('works', 'works'),
170
-
171
- );
172
-
173
- $args = array(
174
-
175
- 'labels' => $labels,
176
-
177
- 'public' => true,
178
-
179
- 'publicly_queryable' => true,
180
-
181
- 'show_ui' => true,
182
-
183
- 'show_in_menu' => true,
184
-
185
- 'query_var' => true,
186
-
187
- 'capability_type' => 'post',
188
-
189
- 'has_archive' => true,
190
-
191
- 'hierarchical' => false,
192
-
193
- 'menu_position' => null,
194
-
195
- 'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments')
196
-
197
- );
198
-
199
- register_post_type($post_type, $args);
200
-
201
- }
202
-
203
-
204
-
205
- function my_rewrite_flush() {
206
-
207
- add_my_post_type();
208
-
209
- flush_rewrite_rules();
210
-
211
- }
212
-
213
- register_activation_hook( __FILE__, 'my_rewrite_flush' );
214
-
215
- ```
216
-
217
-
218
-
219
- 実行フックのタイミングをいくつか試してみましたが、改善はなしです。
220
-
221
- initなのがダメなのでしょうか?書き方のコツがあるのかもしれません。
222
-
223
-
224
-
225
- ```PHP
226
-
227
- add_action('init', 'add_my_post_type');
228
-
229
- ```
230
-
231
-
232
-
233
- <試してみたフック>
234
-
235
-
236
-
237
- 見当違いかもしれませんが。m(_ _)m
238
-
239
-
240
-
241
- ```PHP
242
-
243
- add_action('plugins_loaded', 'add_my_post_type');
244
-
245
- add_action('wp_loaded', 'add_my_post_type');
246
-
247
- ```
248
-
249
-
250
-
251
- 解決策はあるのでしょうか?何が原因なのかわかりません。
252
-
253
-
254
-
255
- そもそもマニュアルの内容自体が
256
-
257
- 間違っている可能性もありそうです。
258
-
259
-
260
-
261
- ### 補足情報
262
-
263
-
264
-
265
- ・公式?マニュアルに書かれていた注意書き
266
-
267
- https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_post_type
268
-
269
-
270
-
271
- ・怒っている人
272
-
273
- https://torounit.com/blog/2015/09/02/2077/
274
-
275
-
276
-
277
- ・(たぶん)怒られている人
278
-
279
- https://chaika.hatenablog.com/entry/2015/04/30/162157
280
-
281
-
282
-
283
- ・flush_rewrite_rules()がプラグインの有効化に機能しないhttps://www.webdevqa.jp.net/ja/plugins/flushrewriterules%EF%BC%88%EF%BC%89%E3%81%8C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96%E3%81%AB%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%84/961818186/
284
-
285
-
286
-
287
- ・フック一覧
288
-
289
- https://yukiyuriweb.com/2018/05/25/introduction-to-wordpress-action-and-filter-hooks/
1
+ っかりまとめきれてなので投稿し直します!一旦ちらは変更しておきます。

6

追記

2021/12/07 13:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  勉強でカスタム投稿タイプを使ったプラグインを作っています。
6
6
 
7
- 大したラグインはありせん
7
+ 最新バージョンのワードレス試していす:ver5.8.2
8
8
 
9
9
 
10
10
 

5

誤字

2021/12/07 12:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -230,7 +230,7 @@
230
230
 
231
231
 
232
232
 
233
- <試してみたフック>
233
+ <試してみたフック>
234
234
 
235
235
 
236
236
 

4

調整

2021/12/07 11:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
 
34
34
 
35
- ただ、ワードプレスの公式?マニュアルサイトや個人ブログなどには
35
+ ただ、ワードプレスの公式マニュアルサイトや個人ブログなどには
36
36
 
37
37
  「flush_rewirte_rulesを毎回実行するのはNG」と書かれていました。
38
38
 
@@ -90,17 +90,11 @@
90
90
 
91
91
  ```
92
92
 
93
-
94
-
95
- そこで公式?マニュアルを見ると
96
-
97
- 以下の記載が書かれてました。
93
+ マニュアルには以下内容が書かれてありました。
98
-
99
-
100
94
 
101
95
  このように書けば毎回は実行されないようです。
102
96
 
103
- (プラグインの有効化のときだけ実行される?)
97
+ (プラグインの有効化のときだけ実行される?)
104
98
 
105
99
 
106
100
 
@@ -222,9 +216,9 @@
222
216
 
223
217
 
224
218
 
225
- 実行フックのタイミングをいくつか試してみましたが改善なしです。
219
+ 実行フックのタイミングをいくつか試してみましたが改善なしです。
226
-
220
+
227
- initなのがダメなのでしょうか?
221
+ initなのがダメなのでしょうか?書き方のコツがあるのかもしれません。
228
222
 
229
223
 
230
224
 
@@ -236,7 +230,11 @@
236
230
 
237
231
 
238
232
 
239
- <試したフック>
233
+ <試したてみたフック>
234
+
235
+
236
+
237
+ 見当違いかもしれませんが。m(_ _)m
240
238
 
241
239
 
242
240
 
@@ -250,17 +248,17 @@
250
248
 
251
249
 
252
250
 
253
- どんな原因が考えられるでしょうか?
251
+ 解決策はあでしょうか?何が原因なのかわかりません。
254
-
255
-
256
-
252
+
253
+
254
+
257
- そもそも公式?のマニュアルの内容が
255
+ そもそもマニュアルの内容自体
258
-
256
+
259
- 間違っているというのもありそうです。
257
+ 間違っている可能性もありそうです。
260
-
261
-
262
-
258
+
259
+
260
+
263
- ### 補足情報(FW/ツールのバージョンなど)
261
+ ### 補足情報
264
262
 
265
263
 
266
264
 

3

追記

2021/12/07 10:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -222,7 +222,9 @@
222
222
 
223
223
 
224
224
 
225
- 実行タイミングを「init」以外もいくつか試してみましたが改善なしです。
225
+ 実行フックのタイミングをいくつか試してみましたが改善なしです。
226
+
227
+ initなのがダメなのでしょうか?
226
228
 
227
229
 
228
230
 
@@ -236,9 +238,15 @@
236
238
 
237
239
  <試したフック>
238
240
 
239
- ・plugins_loaded
241
+
240
-
242
+
241
- ・wp_loaded
243
+ ```PHP
244
+
245
+ add_action('plugins_loaded', 'add_my_post_type');
246
+
247
+ add_action('wp_loaded', 'add_my_post_type');
248
+
249
+ ```
242
250
 
243
251
 
244
252
 

2

修正

2021/12/07 10:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -222,10 +222,6 @@
222
222
 
223
223
 
224
224
 
225
- ここに問題に対して試したことを記載してください。
226
-
227
-
228
-
229
225
  実行タイミングを「init」以外もいくつか試してみましたが改善なしです。
230
226
 
231
227
 

1

誤字

2021/12/07 10:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  「flush_rewirte_rulesを毎回実行するのはNG」と書かれていました。
38
38
 
39
- (怒っている人までいたので書き方に注意しなければならないのも
39
+ (怒っている人までいたので書き方に注意しなければならない
40
40
 
41
41
 
42
42