質問するログイン新規登録

回答編集履歴

1

返信

2017/12/18 11:50

投稿

KazuhiroHatano
KazuhiroHatano

スコア7834

answer CHANGED
@@ -19,4 +19,40 @@
19
19
  って感じでしょうか
20
20
 
21
21
  template_includeフィルタはコメントの種類ごとに表示内容が全然違うので
22
- テンプレートファイル自体を切り替えたいとかいう場合に使います
22
+ テンプレートファイル自体を切り替えたいとかいう場合に使います
23
+
24
+ ---
25
+
26
+ add_rewrite_rule();は**正規表現**による
27
+ URLを書き換え設定を追加します
28
+ 正規表現を知らないと道のりはさらに長く険しく…
29
+
30
+ ```php
31
+ add_rewrite_rule(
32
+ 'mypost_type/([0-9]+)/(\w+)/',
33
+ 'index.php?post_type=mypost_type&p=$matches[1]&page_type=$matches[2]',
34
+ 'top'
35
+ );
36
+ ```
37
+
38
+ これで、例えば
39
+ http://example.com/mypost_type/63/hoge/
40
+
41
+ http://example.com/index.php?post_type=mypost_type&p=63&page_type=hoge
42
+ にリダイレクトされるようになります
43
+
44
+ 第3引数のtopは書き換えルールの優先順位を先頭にってことです
45
+ wordpressの固定ページとかのリライトルールがほとんどのパターンを引っ掛けてしまうので
46
+ ここは割とtop以外の選択肢がないです
47
+
48
+ add_rewrite_tag()はadd_permastruct()とセットで使うもので
49
+ add_rewrite_rule()に渡す引数の生成の設定をする関数です
50
+
51
+ 管理画面のパーマリンク設定でカスタムURLの設定にも使いたいとか
52
+ いろんなパーマリンクで同じ書き換えルールのパーツを使うというときに使います
53
+
54
+ 他のカスタム投稿タイプやページタイプでも同様に子ページを作れるようにしときたい
55
+ とかいうような場合はadd_rewrite_tag()+add_permastruct()でやっておくのもいいです
56
+
57
+ 特定のカスタム投稿でしか使わないとかなら
58
+ add_rewrite_rule()でやっといた方が手間が少ないです