目次
調べた内容のメモ(WordPressのバージョンは2.8.4-ja)
条件分岐タグとパーマリンク
テンプレートタグ - WordPress Codex 日本語版 に基本的なことはのっている。
is_front_page と is_home
この条件分岐タグを使用すると、 [設定]→[表示設定]→[フロントページの設定]で設定したページを見分けられます。
各ページにおける is_front_page() と is_home() が返す値を下の表にまとめました。
ページの種類 | is_front_page() | is_home() | is_page() | 判定条件 |
---|---|---|---|---|
最新の投稿 | true | true | false | is_front_page() && is_home() |
固定ページ:フロントページ | true | false | true | is_front_page() && !is_home() |
固定ページ:投稿ページ | false | true | false | !is_front_page() && is_home() |
※ただし、固定ページを選択しているのに、固定ページ:フロントページ を設定していないと、is_front_page() は常に FALSE を返します。 もちろん、こんな設定にする意味がないので誰もしないと思いますが。。
パーマリンクの取得方法は…
"複数にわたるページ"ではない場合に限りますが
フロントページのパーマリンクは
trailingslashit( get_bloginfo('url') )
で取得できます。(trailingslashit は コチラを参照して下さい。)
おなじく"複数にわたるページ"ではない場合に限りますが
フロントページではないホームページ
( is_home() === TRUE かつ is_front_page() === FALSE のページ )
のパーマリンクは
get_page_link( get_option('page_for_posts') )
で取得できます。
get_option('page_for_posts')
は オプションの page_for_posts の値を取得します。
page_for_posts などのオプションについては以下の表を見てくださいませ。。
show_on_front | フロントページの表示の設定が 最新の投稿 の場合は string(5) "posts" 固定ページ の場合は string(4) "page" |
---|---|
page_on_front | ページIDの数字が文字列型で保存されている。 選択していない場合は string(1) "0" |
page_for_posts | ページIDの数字が文字列型で保存されている。 選択していない場合は string(0) "" (空文字) |
たとえば、http://xxxxxx.xxx/hogehoge/
というURLのページをフロントページ http://xxxxxx.xxx/
に指定した場合、http://xxxxxx.xxx/hogehoge/
はそのまま残っていて http://xxxxxx.xxx/
の重複ページになります。
個別投稿・ページ・添付ファイルページ
条件分岐タグは is_single, is_page, is_attachment をまとめた is_singular が便利。 パーマリンクの取得は get_permalink() を使えば取得できますが、get_permalink では複数にわたるページ・コメントページを考慮したURLは取得できません
各アーカイブ
種類 | 条件分岐タグ | 引数の取得 | リンク取得関数 |
---|---|---|---|
カテゴリ | is_category() | intval( get_query_var( 'cat' ) ) | get_category_link( $category_id ) |
タグ | is_tag() | intval( get_query_var( 'tag_id' ) ) | get_tag_link( $tag_id ) |
著者別 | is_author() | intval( get_query_var( 'author' ) ) | get_author_posts_url( $author_id, $author_nicename = '') |
年別 | is_year() | intval( get_query_var( 'year' ) ) | get_year_link( $year ) |
月別 | is_month() | intval( get_query_var( 'monthnum' ) ) | get_month_link( $year, $month) |
日別 | is_day() | intval( get_query_var( 'day' ) ) | get_day_link( $year, $month, $day) |
get_query_var 関数で取得できる値はキチンと取り扱わないと危険です。たとえば、 <?php echo get_query_var('cpage'); ?>というコードを書いてしまうと、 ?cpage=SCRIPT というパラメータをURLにつけると、「SCRIPT」 と、そのまま出力されるのでセキュリティー的にヤバイです
※これも複数にわたるページを考慮したURLは取得できません
検索ページ
条件分岐タグは is_search
で
http://xxxxxx.xxx/page/2?s=クエリ
http://xxxxxx.xxx/page/2/?s=クエリ
http://xxxxxx.xxx/?s=クエリ&paged=2
http://xxxxxx.xxx/search/クエリ/page/2/
というようなカタチのURLです。
リンク取得方法は考え中です。
複数にわたるページ
複数にわたるページの 条件分岐タグは is_pagedです。
http://xxxxxx.xxx/?paged=1
http://xxxxxx.xxx/page/3
http://xxxxxx.xxx/tag/tag_name/page/2/
と、このようなURLで表示されるページが "複数にわたるページ" に当たります。 リンク取得方法は考え中です。
保留
is_time() 毎時別、毎分別、毎秒別のアーカイブページが表示されている場合
毎秒…だと…?
is_comments_popup もよく分からなかった。古いバージョンのワードプレス?
基本的なURLの構造
ページの種類 | デフォルト | 末尾スラッシュ有り /%postname%/ | 末尾スラッシュ無し /%postname%/hoge |
---|---|---|---|
個別投稿 | ?p=123 | post_name/ | post_name/hoge |
個別投稿 (コメント) | ?p=123 &cpage=3 | post_name/ comment-page-3/ | post_name/hoge/ comment-page-3 |
添付ファイル | ?attachment_id=90 | post_name/ attachment/ file_name/ | post_name/hoge/ attachment/ file_name |
添付ファイル (コメント) | ?attachment_id=90 &cpage=3 | post_name/ attachment/ file_name/ comment-page-3/ | post_name/hoge/ attachment/ file_name/ comment-page-3 |
ページ | ?page_id=123 | post_name/ | post_name |
ページ (Paged) | ?page_id=123 &paged=2 | post_name/ page/2/ | post_name/ page/2 |
検索ページ | ?s=query | 〃 | 〃 |
検索ページ (Paged) | ?s=query &paged=2 | page/2/ ?s=query | page/2 ?s=query |
カテゴリ | ?cat=5 | category/ cat_name/ | category/ cat_name |
タグ | ?tag=tag_name | tag/ tag_name/ | tag/ tag_name |
著者別 | ?author=5 | author/ author_name/ | author/ author_name |
時間別 | ?m=20090811 | 2009/08/11/ | 2009/08/11 |
アーカイブ (Paged) | ?パラメータ=5 &paged=2 | 種類/ 名前/ page/2/ | 種類/ 名前/ page/2 |