wordpressで構築している際に、商品案内やら会社概要などを固定ページにしたいわけですが、固定ページにはカテゴリを与えられないような感じなので、階層化をどうしようかとふと思いました。
例えば
商品案内/商品1 とか
それは「親ページを指定すればいい」と見つけたので、それはそうだ。と解決。
固定ページの作成時、
「ページ属性」のところで、親を設定。と。
で、もうひとつ。
すると、パンくずも階層表記したいわけです。
トップページ > 商品案内 > 商品1
みたいな感じで。
参考にしたのは、たまたま見つけた以下のサイト(意訳つけてみました)
http://www.wprecipes.com/how-to-get-parent-pagepost-title
To achieve this recipe, simply edit your page.php file and paste the following code where you'd like your parent page title to be displayed:ほうほう、なるほど。
標題の件をやるには、単純にpage.phpに以下のコードを親のタイトルを表示させたいところにペーストするだけ。
<?phpThat's all. Also, this code should be some inspiration for creating breadcrumbs. See you tomorrow!
$parent_title = get_the_title($post->post_parent);
echo $parent_title;
?>
これだけ。ついでに、これパンくずにもつかえるよね。それじゃまた!
というわけで、
<div class="bread-crumbs">と入れてみました。
<a href="<?php bloginfo('url'); ?>">トップページ</a> >
<?php $parent_title = get_the_title($post->post_parent); echo $parent_title; ?> >
<?php the_title(); ?>
</div>
すると、確かに
トップページ > 親ページタイトル > 固定ページ
になった。
しかし、ここで親ページタイトルの箇所もリンクさせる必要があるのではないかと思い、
<?php $parent_title = get_the_title($post->post_parent); echo $parent_title; ?>とかしたらいいのではないの?
のところに、
<a href="<?php bloginfo('url'); ?><?php $parent_title = get_the_title($post->post_parent); echo $parent_title; ?>"><?php $parent_title = get_the_title($post->post_parent); echo $parent_title; ?></a>
と入れてみたら、、
単純に日本語でURLが生成され、、
http://hogehoge.jp/親ページタイトル(←リアルに日本語まま
みたいな感じになってしまい
パーマリンク上はアルファベットで編集されているので当然飛べず。。。
じゃあそこの情報を取得して吐き出すにはどうするんだと、探して回ったら以下のやり取りを発見。
http://wordpress.org/support/topic/parent-permalink
ここの最後の方で、PSoundという人がtry this!と言っている箇所:その次の方も「できたよ」って言っている。※ちなみに、次の方が「タイプミスがあった」とも指摘している通り以下のを拝借。
<?php $permalink = get_permalink($post->post_parent); ?>で、echoで書き出している部分をちょっと変えて、
<a href="<?php echo $permalink; ?>">
<div class="bread-crumbs">となって、無事に親ページにもリンクが生成された。
<a href="<?php bloginfo('url'); ?>">トップページ</a> >
<a href="<?php $permalink = get_permalink($post->post_parent); echo $permalink; ?>"><?php $parent_title = get_the_title($post->post_parent); echo $parent_title; ?></a> >
<?php the_title(); ?>
</div>