WPの「投稿」を独立のブログっぽい感じのURLにする

WordPressをCMSとして利用するとき、カスタム投稿タイプやタクソノミーを利用して更新可能なコンテンツを作り、固定ページで会社概要やお問い合わせのページを作り、一緒にブログも展開したい、ということがあると思います。
その時、ブログは/blog というサブディレクトリの下にあるような感じにまとめたい、というご希望を聞いたりします。

どういうことかというと、WPのパーマリンク設定で、デフォルトではなく、例えば年月を含んだパーマリンクに設定したとします。すると、投稿で書いた記事やアーカイブのURLは下記のようになります。
シングルページ       http://ドメイン/2015/11/sample/
カテゴリーアーカイブページ http://ドメイン/category/diary/
こんな感じです。
悪くはないのですが、このページがサイト内で「ブログ」であることをもう少しわかりやすくなる方が良い、例えば /blog というサブディレクトリにまとめたい、というふうに。

別のWPをサブディレクトリにインストールすればもちろんできますし、マルチブログにする方法も考えられます。管理者が複数いて、ブログだけを更新する人が多い場合などは、別WPやマルチブログにした方が、権限関係の問題がかえってシンプルに解決できると思います。
そうではなく、更新をする人はほぼ決まっていて権限の問題もなく、また制作後の管理をシンプルにしたい、URLが違えば良いというぐらいであれば、続きを読んで挑戦してみてくださいー。

今回は、下記のような用件があるサイトを想定しています。
・サイトのトップページはブログのような表示ではなく、企業サイトっぽい感じにする
・カスタム投稿タイプを利用している
・固定ページを利用している
・コンテンツとしてブログを持っている

まず、カスタム投稿タイプを追加します。functions.php に下記のように書きます。
制作実績のページを作る想定で、スラッグをworksとします。

function create_post_type() {
//カスタム投稿 制作実績
register_post_type(
  'works',
array(
    'labels' => array(
    'name' => __( '制作実績' ),
    'singular_name' => __( '制作実績' )
    ),
    'public' => true,
    'hierarchical' => false,
    'menu_position' => 2,
    'supports' => array('title','editor','excerpt','thumbnail','custom-fields'),
    'has_archive' => true,
    'rewrite' => array( 'with_front' =>false)
)
);

}
add_action( 'init', 'create_post_type' );

重要なのは、’rewrite’=>array(‘with_front’=>false); です。これを書いておくことで、この後設定するパーマリンク設定の影響を受けないようになります。

functions.php を書き換えてサーバーに反映したのち、WPの管理画面から「パーマリンク設定」を開きます。パーマリンクを下記のように設定します。スクリーンショット 2015-11-28 21.37.06

これで変更を保存すればOK。
固定ページはもともとパーマリンクの設定に影響を受けないため、/blog がURLに入ることはありません。
これで、下記のようなURLでページを表示することができるようになりました。

もうひとつ、ブログのトップページを設定します。

デフォルトではサイトのトップページに投稿の新着記事10件が表示されているものになります。これはいかにもブログのトップページで、企業ページのトップページにはちょっとそぐわない感じがします。今回はサイトのトップページに任意の固定ページを表示し、代わりに投稿の新着記事10件を表示というページを /blog というURLで見えるようにします。

では、準備として2つの固定ページを作ります。
ひとつはサイトトップページ、WP的には「フロントページ」と呼ぶページ用と、
もうひとつは投稿の新着10件を表示するブログのトップページ用のページです。

スクリーンショット 2015-11-29 13.16.01

Contactはお問い合わせ用のページです。
トップと、ブログ、というタイトルでそれぞれ用のページを作りました。
この時、ブログのページのスラッグはblogとしておきます。

スクリーンショット 2015-11-29 13.17.21

固定ページが作れたら、設定>表示設定 を開きます。
一番上に「フロントページの表示」とあります。デフォルトでは下記のようになっていると思います。

スクリーンショット 2015-11-29 13.19.18

この部分を、「固定ページ」を選択し、フロントページ、投稿ページのセレクタから先ほど作ったそれぞれ用の投稿ページを選びます。こんな感じ。

スクリーンショット 2015-11-29 13.21.24

これで変更を保存すると、フロントページには固定ページの内容が表示されます。
そして、投稿の最新10件の記事を表示するページは下記のようなURLになります。
http://www.ccc-labo.net/blog/
各記事のページは下記ように。
http://www.ccc-labo.net/blog/2015/11/post-104/
カテゴリーの一覧ページは下記のように。
http://www.ccc-labo.net/blog/category/未分類/
これで、URLを見るだけでなんとなく「あー、ブログ記事?」とわかるような気がする、URLになりましたね!

ちなみに、上記のように表示設定を変更した場合、フロントページのテンプレートはfront-page.phpとなります。また、投稿ページの一覧ページはhome.phpが使えます。
index.phpで条件分岐は、少し複雑だと個人的には感じています。

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です