2012年2月24日金曜日

wordpressで固定ページの階層化。ついでにパンくずも階層化する。さらにそのパンくずの親ページにもリンクをつける

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に以下のコードを親のタイトルを表示させたいところにペーストするだけ。
<?php
$parent_title = get_the_title($post->post_parent);
echo $parent_title;
?>
That's all. Also, this code should be some inspiration for creating breadcrumbs. See you tomorrow!
これだけ。ついでに、これパンくずにもつかえるよね。それじゃまた!
ほうほう、なるほど。
というわけで、
<div class="bread-crumbs">
<a href="<?php bloginfo('url'); ?>">トップページ</a> &gt;
<?php $parent_title = get_the_title($post->post_parent); echo $parent_title; ?> &gt;
<?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); ?>
<a href="<?php echo $permalink; ?>">
で、echoで書き出している部分をちょっと変えて、
<div class="bread-crumbs">
    <a href="<?php bloginfo('url'); ?>">トップページ</a> &gt;
    <a href="<?php $permalink = get_permalink($post->post_parent); echo $permalink; ?>"><?php $parent_title = get_the_title($post->post_parent); echo $parent_title; ?></a> &gt;
    <?php the_title(); ?>
</div>
となって、無事に親ページにもリンクが生成された。

0 件のコメント:

コメントを投稿