私はページ階層を使用しています、そして、私は両親と祖父母のページ(もしあれば)のタイトルを見せたいです。
構造は次のようなものです
スタートページ
スタートページ> 2ページ目
スタートページ> 2ページ目> 3ページ目
スタートページ> 2ページ目> 3ページ目> 4ページ目
タイトルは、4ページ目の「4ページ目 - 3ページ目 - 2ページ目 - スタートページ」のようになります。3ページ目:「3ページ目 - 2ページ目 - スタートページ」
私が見つけた解決策はそれほど良くない:
<title><?php
if(is_page()){
$parent = get_post($post->post_parent);
$parent_title = get_the_title($parent);
$grandparent = $parent->post_parent;
$grandparent_title = get_the_title($grandparent);
if ($parent) {
if ($grandparent) {
echo wp_title('') . " - " . $parent_title . " - " . $grandparent_title . " - ";
}
else {
echo wp_title('') . " - " . $parent_title . " - ";
}
}
else {
echo wp_title('') . " - ";
}
}?> Startpage</title>
セカンドページレベルでは、そのページのタイトルは2倍になります... "セカンドページ - セカンドページ - スタートページ"
誰でも?
例:
if( is_page() ) :
echo $post->post_title;
if( $ancs = get_ancestors($post->ID,'page') ) {
foreach( $ancs as $anc ) {
echo ' -> ' . get_page( $anc )->post_title;
}
}
endif;
これが解決策です。これは、 get_ancestors() 関数を使用します。これは、現在のページの最上位から最上位までの階層の配列を返します。
私はあなたがそれを表示したい順番を実際には得られなかったので(最低から最高まで、または最高から最低まで)、順序を変更するために$ reverseパラメータを設定しました(デフォルト:false)。
<?php
function print_page_parents($reverse = false){
global $post;
//create array of pages (i.e. current, parent, grandparent)
$page = array($post->ID);
$page_ancestors = get_ancestors($post->ID, 'page');
$pages = array_merge($page, $page_ancestors);
if($reverse) {
//reverse array (i.e. grandparent, parent, current)
$pages = array_reverse($pages);
}
for($i=0; $i<count($pages); $i++) {
$output.= get_the_title($pages[$i]);
if($i != count($pages) - 1){
$output.= " » ";
}
}
echo $output;
}
//print lowest to highest
print_page_parents();
//print highest to lowest
print_page_parents($reverse = true);
?>
私はそれが役立つことを願っています!
Vq.