页面标题、父倾斜和祖父母标题

时间:2012-12-13 作者:Erikm

我使用的是页面层次结构,我想显示父母和祖父母页面的标题(如果有)。

结构类似于

起始页

开始页>第二页

开始页>第二页>第三页

开始页>第二页>第三页>第四页

标题应该类似于第四页:“第四页-第三页-第二页-起始页”第三页:“第三页-第二页-起始页”

我找到的解决方案不是那么好:

<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 个回复
最合适的回答,由SO网友:Michael 整理而成

可能基于get_ancestors();

示例:

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;

SO网友:Vidal Quevedo

这里有一个解决方案。它使用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.= " &raquo; ";
    }
  }
    echo $output;
}

//print lowest to highest
print_page_parents();

//print highest to lowest
print_page_parents($reverse = true);

?>
我希望这有帮助!

Vq。

结束