前回のカスタム投稿タイプを使って『ScrapBook』という名のブックマークを目的とした子ブログを作成しましたという記事の第2弾です。
ScrapBook作成 目次
- カスタム投稿とは? 作成方法をプラグインも含めて考える。
- パーマリンクについて!← いまここ
- 実際に作成してみよう!その1:トップページをつくる!
- 実際に作成してみよう!その2:シングルページをつくる!
- 実際に作成してみよう!その3:カスタム投稿タイプ一覧をつくる!
パーマリンクについて
カスタム投稿タイプのパーマリンクは記事ごとのスラッグを使用します。
http://ブログのアドレス.com/カスタム投稿タイプの種類名/カスタム投稿のスラッグ/このスラッグというのは、デフォルトでは、タイトルが入ります。
ということは、スラッグが日本語の場合、URLに日本語が表示されてしまうワケですが、 URLが日本語というのは、ちょっと美しさに欠けますので、ここは変更しておきたいところです。
では、変更方法を。
ダッシュボードで設定したパーマリンクを反映させる
functions.phpに記載します。
前回作成した、カスタム投稿タイプのところに
1 |
'rewrite' => true, |
この一文を付け加えてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
add_action( 'init', 'scrapbook_custom_post_type' ); function scrapbook_custom_post_type() { $labels = array( 'name' => _x('scrapbook', 'post type general name'), 'singular_name' => _x('scrapbook', 'post type singular name'), 'add_new' => _x('scrapbookを追加', 'scrapbook'), 'add_new_item' => __('新しいscrapbookを追加'), 'edit_item' => __('scrapbookを編集'), 'new_item' => __('新しいscrapbook'), 'view_item' => __('scrapbookを編集'), 'search_items' => __('scrapbookを探す'), 'not_found' => __('scrapbookはありません'), 'not_found_in_trash' => __('ゴミ箱にscrapbookはありません'), 'parent_item_colon' => '', ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => 5, 'has_archive' => true, 'supports' => array('title','editor','comments','thumbnail','slug'), 'taxonomies' => array('scrapbook_category','scrapbook_tag') ); register_post_type('scrapbook',$args); |
もし、ダッシュボードで設定したパーマリンクが数字ベースですと、
と表示されます。
投稿タイプ名の部分を変更したい
投稿タイプ名部分を変更するには、
※ 投稿タイプ名:scrapbook を book に変更したい場合
1 |
'rewrite' => array('slug' => 'book'), |
とします。
変更後はこのようになります。
スラッグをIDにする方法
これには、まず、パーマリンク設定の変更がカスタム構造である必要がありますので、設定を変更しておきます。
1 |
/%post_type%/%post_id% |
次に、functions.phpに以下を記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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%', 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; } |
詳細は、こちらのブログを参照してください。
パーマリンク設定をするためのプラグイン
カスタム投稿タイプのパーマリンク設定をするためのプラグインもあります。
詳細は下記にて。

以上で、パーマリンクについては終わりです。
実際には、この部分をわたしは、一番最後にしてしまいとても後悔したので。
一番最初にやっておくべきだなと思い初めに書きました。
何かの参考になれば幸いです。
Pingback: カスタム投稿タイプのパーマリンク設定とカスタマイズ | ネットアンサー備忘録()