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.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。