问题描述
我正在使用页面层次结构,我想显示父母和父母页面的标题 (如果有的话) 。
结构就是这样
首页
起始页> 第二页
起始页> 第二页> 第三页
起始页> 第二页> 第三页> 第四页
标题应该是第四页:「第四页 – 第三页 – 第二页 – 开始」 第三页:「第三页 – 第二页 – 开始」
我发现的解决方案不是那么好:
<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>
在第二页级别,该页面的标题获得双倍…「第二页 – 第二页 – 起始页」
任何人?
最佳解决思路
可能建立在 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;
次佳解决思路
这是一个解决方案。它使用 get_ancestors()函数,该函数将当前页面的祖先的数组从最低层次返回到最高层。
由于我没有真正按照你想显示的顺序 (从最低到最高或最高到最低),我设置了一个 $ reverse param(默认值: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 。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。