WordPressカスタム投稿タイプのパーマリンク設定とカスタマイズ
WordPressのカスタム投稿タイプのパーマリンクの変更方法とカスタマイズ方法です。
設定方法
function.phpのregister_post_type()の箇所で、下記のように’rewrite’を設定する事でカスタム投稿タイプのパーマリンク設定ができます。
‘rewrite’ => true, にするとダッシュボードで設定したパーマリンクが反映されるようになります。
register_post_type( 'tempatetag', array( 'label' => 'Templateタグ', 'public' => true, 'hierarchical' => true, 'can_export' => true, 'show_in_nav_menus' => true, 'rewrite' => //↑rewriteの指定をする array( 'slug' => 'parmarink', 'with_front' => 'false' ), ) )
!注意点
rewriteの箇所を設定した時にダッシュボードの「”設定”→”パーマリンク設定”」でもう一度パーマリンクの設定を入力しないと、404 エラーが出て記事が表示できませんでした。rewriteの設定を変更した時も設定し直さないとエラーになってしまいましたので気をつけなくては行けません。
パーマリンクの表示のされ方
ブログのパーマリンクの設定を”/カテゴリ名/記事ID”で表示するようにしていた場合は、投稿タイプは以下のようなパーマリンクになりました。
http://ブログのアドレス.com/toukouname(設定した投稿タイプ名)/kijititle(記事ごとのスラッグ)
投稿タイプのパーマリンクの投稿タイプ名部分を任意のものにする
‘rewrite’ を下のように記入するとパーマリンクにその文字が入るようです。
'rewrite' => array('slug' => 'parmarink'),
↓以下のようなパーマリンクになります。
http://ブログのアドレス.com/parmarink/kijititle(記事ごとのスラッグ)
※以下2012/10/20追記。
投稿タイプのパーマリンクを記事IDにする
カスタム投稿タイプのパーマリンクは記事ごとのスラッグを使用するため、スラッグが日本語の場合はそのまま日本語のアドレスになってしまいます。
スラッグを利用せずに記事IDを利用するようにする方法です。
こちらの記事「WordPressのカスタム投稿タイプを企業サイトに使う場合の(超個人的)決定版 – エクスト スタッフブログ」で公開されていたコードをfunction.phpへ記入すると記事IDで表示するようにしてくれます。
下記を functions.php へ記入します。
add_action('init', 'myposttype_rewrite'); function myposttype_rewrite() { global $wp_rewrite; $queryarg = 'post_type=投稿タイプ名&p='; $wp_rewrite->add_rewrite_tag('%投稿タイプ名_id%', '([^/]+)',$queryarg); $wp_rewrite->add_permastruct('投稿タイプ名', '/投稿タイプ名/%投稿タイプ名_id%.html', false); } add_filter('post_type_link', 'myposttype_permalink', 1, 3); function myposttype_permalink($post_link, $id = 0, $leavename) { global $wp_rewrite; $post = &get_post($id); if ( is_wp_error( $post ) ) return $post; $newlink = $wp_rewrite->get_extra_permastruct($post->post_type); $newlink = str_replace('%'.$post->post_type.'_id%', $post->ID, $newlink); $newlink = home_url(user_trailingslashit($newlink)); return $newlink; }
これでカスタム投稿タイプで投稿した記事が 記事ID.html と変更できます。
固定ページでも実行したいのですがどうすればいいのでしょうか?
坂井 さま
固定ページのパーマリンク設定を、” ページID.html “にされたいということでしょうか?
と”関数リファレンス/WP Rewrite – WordPress Codex 日本語版“ありますので、ページID.html で表示できるのでしょうか??ちょっと私もわかりません…フォーラムの方で聞かれた方がわかるかもしれませんね…
%pagename%.html で表示ならば、以下のページで分かると思います。
固定ページのURLの拡張子をhtmlに変更する:WordPress私的マニュアル