一緒に悩み、考える。
つくるだけでなく、
そのあとの物語も、ともに。

どんな会社もサービスも、それぞれにストーリーがあります。
花のやはそれをサポートしながら、お客様の成長を隣で見ていたいのです。

一緒に悩み、考える。
つくるだけでなく、
そのあとの物語も、ともに。

どんな会社もサービスも、
それぞれにストーリーがあります。
花のやはそれをサポートしながら、
お客様の成長を隣で見ていたいのです。

ブログBLOG

  1. 名古屋のホームページ制作会社 花のや
  2. 花のやブログ
  3. WordPressで階層とURLを考慮した設計
2014/10/14Web制作WordPress

WordPressで階層とURLを考慮した設計

こんにちは、和田です。

WordPressの3.0くらいからカスタム投稿・カスタム分類などが簡単に設定できるようになり
今ではほとんどの案件でこの機能を使用していますが、ちょっと悩んだりするのがその際に自動で作られるアドレス・URLとそれぞれの階層構造です。

今回はWordPressでサイトを制作するにあたって、これらの問題点や注意点、それに対する対策方法などを紹介しようと思います。

 

 desc1よくあるような左の構造のページを作るという想定で説明しようと思います。

普通に作っていけば、ページトップから、商品一覧(productというカスタム投稿)、店舗一覧(shopというカスタム投稿)等は問題なく作っていけると思います。

 一番問題になるのが「ブログ一覧」ですね。
方法はいくつかありますが

  • blogというカスタム投稿を作る。
  • 普通の投稿(post)を使い、ブログ一覧を固定ページで作成する。

の2案で対応するのが多いのではないでしょうか?

 カスタム投稿で対応する場合のメリットとデメリット
  • 分岐やテンプレートファイルが増えてしまう
  • 投稿(POST)が無駄になってしまう
  • 本来のテンプレートタグ等(カレンダー表示等)がそのままで使えない
一覧を固定ページで作成する場合のメリットとデメリット
  • 本来のテンプレートタグがそのまま使用できる
  • 専用のテンプレートファイルを作る必要がある
  • 一覧表示の固定ページを1つ作らなければいけない

どちらもある程度、知識などが必要になってきてしまいますがこのような感じになるでしょう。

さて、それぞれのメリットとデメリットを把握した上で、弊社での対応方法を紹介します。

 

なるべく自然になるような階層構造をWordPressで作る方法

ブログとして成立させるためのカレンダーウィジェットやカテゴリーリストなど、1つ追加しようとするたびにその投稿タイプで対応できるようにするのは大変なので、やはりブログとして使うには標準の投稿(post)を使用するのが一番だと思います。

パーマリンク構造の変更

まずはパーマリンクを変更します。
下図の様にすると投稿に/blog/というディレクトリ構造になります。

desc2

ただし、この設定をすると通常では他のカスタム投稿も/blog/が付与されてしまいます。
※固定ページにはこのディレクトリ構造は反映されませんので特別なことをしなければそのままでいいでしょう。
これは各カスタム投稿のオプションでwithFrontをfalseに設定すれば外れます。

Custom Post Type UIプラグインの場合は「Advanced Option」内に設定項目があります。

desc3

これで、ブログの詳細まではURLは希望通りの形になったと思います。
あとはブログの一覧機能となります。

 

通常投稿(post)の一覧表示

これは有名なプラグインcustom post type permalinksの作者TORO-Unitさんが公開されているもう一つのプラグイン Post archiveを使用します。

ただ、少し古くWordPress3.9あたりからエラーが出てしまうようになっています。
action hookのparse_queryの時点でWordPressの関数get_query_varが利用できなくなった為のようですので少し変更します。

このプラグインのpost-archive.phpの80行目辺りの関数 set_conditionalを以下のように変更します。

	public function set_conditional( $arr ) {
//		if( get_query_var( 'post_type' ) =='post' ){
		if( $arr->query_vars['post_type'] =='post' ){
			$arr->is_home = false;
			$arr->is_archive = true;
			$arr->is_post_type_archive = true;
		}
		return $arr;
	}

これでこのプラグインが利用できるようになりましたので後はインストールし、有効化すると投稿の一覧が /blog/で表示されるようになりました。
このプラグイン結構重宝しているのでcustom post type permalinksと統合してくれると嬉しいです。

 このプラグインを利用するメリット、固定ページでの一覧を選ばないメリットはやはりis_archive()での判定ができたりarchive.phpだけで済ませられるという点です。

いくつも分岐させたりテンプレートファイルが無駄に増えたりすると色々管理するのが大変になりますからね。

この記事を書いた人:wada

エンジニア担当の和田です。 漆を塗ったりしていましたが最終的にプログラマーへと転職してしまいました。

LINEで送る
Pocket

人気記事ランキング

お問い合わせ

Webサイト制作・その他お仕事のご依頼、
ご相談についてお気軽にお問い合わせください。

  • ホームページ制作で”補助金・助成金”使えます!
  • WEBに関する無料個別相談会
株式会社 花のや
〒460-0008
愛知県名古屋市中区栄2-14-5 山本屋本店栄ビル7階

花のやについて

お仕事のご依頼やご相談は、下記の電話番号
または、メールフォームよりお問い合わせください。
TEL.052-211-9898 / FAX.052-211-9899

お問い合わせ