技術ブログ
Custom Post Type UIによるリライトの設定
「Custom Post Type UI」のリライトを使用したURL変更
「Custom Post Type UI」のには以下の項目があります。
設定することでURLを変更することが可能です。
上のカスタムリライトスラッグに何を設定したらよいか、また設定内容にディレクトリーを含めることが可能なのかを検証します。
前提:「Custom Post Type UI」のカスタムリライトスラッグに何を設定したらよいか
例:カスタム投稿タイプ「topics」のURLを「blogs」として使用することが可能か
https://(ドキュメントルート)/topics/
↓ ↓ 以下としたい
https://(ドキュメントルート)/blogs/
希望のパス(この場合blogs)を設定すれば、https://(ドキュメントルート)/blogs/のような形で、カスタム投稿タイプtopicsが表示されます。
「Custom Post Type UI」で以下の設定を行った場合、カスタム投稿タイプ「topics」のURLを「blogs」として使用することが可能
- 投稿タイプスラッグ:topics
- リライト:真
- カスラムリライトスラッグ:blogs
※実際にはパーマリンク設定を管理画面から更新してください。
設定内容にディレクトリー(「/」スラッシュ)を含めることが可能なのか。
例:カスタム投稿タイプ「topics」のURLを「hogehoge/topics」として使用したい
https://(ドキュメントルート)/topics/
↓ ↓ 以下としたい
https://(ドキュメントルート)/hogehoge/topics/
「Custom Post Type UI」で以下の設定を行った場合、(「/」スラッシュ)を含めることが可能。
- 投稿タイプスラッグ:topics
- リライト:真
- カスラムリライトスラッグ:hogehoge/topics
※実際にはパーマリンク設定を管理画面から更新してください。
「Custom Post Type UI」でリライト設定をした場合の、テンプレートとの関係
例:カスタム投稿タイプ「topics」のURLを「hogehoge/topics」として使用したい場合、
- archive-topics.php
- single-topics.php
- taxonomy-post-type-topics.php(※pressx.jpテンプレートを利用の方のみ)
がカスタム投稿タイプ「topics」のテンプレートとして利用可能です。
「Custom Post Type UI」カスタムリライトスラッグ適用で、どのような設定が裏側でなされるのか?
内部のコードでは何が起こっているのでしょうか。
「Custom Post Type UI」でリライトを設定することで、リライトルール($wp_rewrite->rules)が設定されます。
リライトルールは以下で確認可能です
1 2 3 |
<?php var_dump( $wp_rewrite->rules ); ?> |
設定は、$wp_rewrite->rulesに格納されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php array(521) { ...略... ["hogehoge/topics/?$"]=> string(28) "index.php?post_type=topics" ["hogehoge/topics/page/([0-9]{1,})/?$"]=> string(46) "index.php?post_type=topics&paged=$matches[1]" ["hogehoge/topics/([0-9]{4})/([0-9]{1,2})/?$"]=> string(66) "index.php?year=$matches[1]&monthnum=$matches[2]&post_type=topics" ["hogehoge/topics/([0-9]{4})/?$"]=> string(45) "index.php?year=$matches[1]&post_type=topics" ...略... } ?> |
※一部のリライトはpress.jpのテンプレート利用時のみのリライトです。
リライトとは、「あるURLをWordPressが理解できる形に変換して伝える」ということをしています。
例えば、
1 2 3 |
["hogehoge/topics/?$"]=> string(28) "index.php?post_type=topics" |
では、hogehoge/topics/で接続した場合、「投稿タイプはtopicsだよ」ということを、WordPressが理解できるよう設定してくれています。