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' => true,
//↑rewriteの指定をする
)
)

!注意点

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 と変更できます。

Related Article

9 Comments & Tracbacks

Leave a Comment

Emailは公開されません。*は必須項目です。


*


Categorys

Tags

CSS3 ダッシュボード ヘッダー jQueryプラグイン スライドショー トラブル コードサンプル コンテンツ Facebook 素材 php 引っ越し お知らせ JavaScript カテゴリー Shareボタン CSS IE 投稿タイプ レスポンシブ Photoshop seo Macアプリ サイドバー タクソノミー HTML5 WPセキュリティ Git カスタムメニュー ナビゲーション PHPリファレンス SVG API query_posts RSS WP使い方 iTunes データベース コメント function 条件分岐 get_posts() スマートフォン Sass/Compass moreタグ