質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

3491閲覧

【wordpress】ひ孫ページに、子、孫ページのタイトルを表示したい

financyy

総合スコア18

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/05/03 04:55

編集2016/05/03 05:30

親ページ(1)
-子ページ(2)
-孫ページ(3)
-ひ孫ページ(4)

という階層になっているページで、
2個上のページタイトルとURLを表示したいです。
今回で言うと、ひ孫ページ(4)に、子ページ(2)のタイトルです。

php

1<?php if($post -> post_parent != 0 ): ?> 2<?php $ancestors = array_reverse( $post-> ancestors );?> 3<?php foreach($ancestors as $ancestor): ?> 4<?php echo get_the_title($ancestor); ?> 5<?php endforeach; ?> 6<?php endif; ?>

これだと、最上位の親ページのタイトルまで取得されてしまいます。

1)親を含まない記述方法
2)1つのphpページの複数個所に記述する場合のスマートな記述方法

を教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんな感じですかね。(すいませんが未テストです) 2個上がどこでも2個上なのかなどによっても書き方は変わりますが、array_slice あたりで調整すればいけると思います。

PHP

1function the_limited_ancestors( $post, $cnt, $echo = true ) { 2 if ( !$post || $post->post_parent == 0 ) { return; }; 3 $cnt = ( is_numeric( $cnt ) && is_int( $cnt ) && ( $cnt > -1 ) ) ? $cnt : 2; 4 $ancestors = array_reverse( array_slice( $post->ancestors, 0, $cnt ) ); 5 foreach( $ancestors as $ancestor ) { 6 $tmp[] = get_the_title( $ancestor ); 7 } 8 if ( $echo !== true ) { 9 return $tmp; 10 } else { 11 echo implode( '', $tmp ); 12 } 13}

HTML

1<?php the_limited_ancestors( $post ); ?>

【PHP: array_slice - Manual】
http://php.net/manual/ja/function.array-slice.php

投稿2016/05/03 07:24

kei344

総合スコア69400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

financyy

2016/05/03 07:31

回答いただきありがとうございます。 いただいた内容で実現できましたので、取り急ぎベストアンサーにさせていただきます! 内容については自分で勉強しながら理解したいと思います。ありがとうございました。
kei344

2016/05/03 08:43

動いたようでよかったです。呼び出し用の引数を処理したりしていますが、financyyさんが書かれていたコードと違う部分は array_slice くらいなので比較的簡単だと思います。がんばってみてください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問