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

Related Article

4 Comments & Tracbacks

Leave a Comment

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


*


Categorys

Tags

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