WordPressの固定ページ(投稿タイプpage)の覚書。
<?php if(while (have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1> // --- [1]
<?php the_content(); ?>
<?php endwhile; ?>
[1] the_titleはループ内で使用する。ループ外でタイトルを表示する場合はテンプレートタグsingle_post_titleを利用する。
» テンプレートタグ/the title – WordPress Codex 日本語版
» single_post_title
<?php while (have_posts()) : the_post(); ?>
<?php
// ポスト情報の取得
$ID = $post->ID; // 投稿ID
$title = $post->post_title; // タイトル
$content = $post->post_content; // 投稿内容
$slug = $post->post_name; // スラッグ
$parent = $post->post_parent; // 親投稿の有無
$uri = get_page_uri($ID);
?>
<h1><?php the_title(); ?></h1> // [2]
<?php the_content(); ?> // [3]
<?php
echo("ID : " . $ID . "<br />\n"); // 投稿ID(ページID)
echo("slug : " . $slug . "<br />\n"); // ページスラッグ
echo("url : " . $uri); // URI
?>
<?php endwhile; ?>
[1] WordPressにより自動的に設定されるグローバル変数$wp_query(WP_Queryのインスタンス)のメソッド the_post()は投稿情報を持つオブジェクト$postをグローバル変数として設定する。
[2] <?php echo($title); ?>は<?php the_title(); ?>と同じ値。
[3] <?php echo($content); ?>は<?php the_content(); ?>と表示内容が異なる(pタグが削除される?)。
上記はget_page関数を使い下記のように記載しても同じ処理をする
» get_page関数
<?php while (have_posts()) : the_post(); ?>
<?php
/* 主な投稿情報のセットアップ */
$ID = $post->ID; // 投稿ID
$page = get_pate($ID);
$title = $page->post_title; // タイトル
$content = $page->post_content; // 投稿内容
$slug = $page->post_name; // スラッグ
$parent = $page->post_parent; // 親投稿の有無
$uri = get_page_uri($ID);
?>
<h1><?php the_title(); ?></h1>
<?php the_content(); ?>
<?php
echo("ID : " . $ID . "<br />\n"); // 投稿ID(ページID)
echo("slug : " . $slug . "<br />\n"); // ページスラッグ
echo("url : " . $uri); // URI
?>
<?php endwhile; ?>
コンディショナルタグis_pageを使うと投稿ID/ページスラッグに応じて処理を変えることができる。
is_page('n') //nはページID。ページIDに応じたきりかえ
is_page("slugname") // ページスラッグに応じた切り替え
$ID = $wp_query->post->ID
$page = get_page($ID);
$parent = $page->post_parent;
$parentsSlugs = explode("/", get_page_uri($ID));
if($parent && in_array("hoge", $parentsSlugs)) {
// hogeより下階層のページの処理
} else {
// その他のページの処理
}
(1) WordPressカスタムページは通常の投稿と同じように投稿IDが与えられる。カテゴリーIDのような特別なIDはない。
(2) 親ページの投稿IDを直接返すテンプレートタグはない?
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。