技術ブログ
固定ページの記述
固定ページの記述
制作者一般には「投稿」より「固定ページ」の方がどちらかというと実装機会が少ないような気がする。
ここでは「久しぶりに固定ページのテンプレートを実装した」というコーダー向けに備忘録を記述する。
スラッグの重複
固有のスラッグの生成するwp_unique_post_slug関数で固定ページなど親子関係を持つpost_typeは同じpost_parentかつ同じpost_nameがないことをチェックしているので親ページが違えばpost_nameが同じでもpost_slugとしては固有とされる
WPの投稿検索の基本になるwp_queryクラスにおいてpostnameのパラメータが渡された場合でもget_page_by_pathで処理され親子関係を考慮して検索されるようになっているのでpost_nameが同じだけで投稿が混同されることはない
「Template Name: (テンプレート名)」による管理画面プルダウンへの適用
固定ページpage.phpでの「単一記事」の記述
...
while(have_posts()):the_post();の部分はthe_contentなどを利用するためには必須。
if(have_posts()):は必要かどうかと言われれば不要だが、投稿アーカイブなどとあわせてセットで入れておいても良いだろう。
固定ページpage.phpでの「記事一覧」の記述
固定ページで記事一覧を作成するには、サブクエリを作成してサブループにて取得する。
サブクエリー抽出条件設定関数はfunction.php内に記述
pressx.jp テンプレートでは inc/jnm-settings-sub-query.php内に記述
$my_posts_per_page,
'post_type' => 'page',
'order' => 'asc',
'post_parent' => $parent_id,
);
return $args;
}
?>
抽出条件取得関数を呼び出して条件取得、サブループ実行
ID);
//サブクエリの実行
$query = new WP_Query( $args );
?>
have_posts()):?>
have_posts()): ?>
the_post(); ?>
...
page-(スラッグ).php
ある1つの固定ページ専用のテンプレートファイルは以下。
page-{slug}.php
page-{ID}.php