我创建了一个自定义侧边栏来抓取帖子父页面:
query_posts("post_type=page&post_parent=6");
我想获取 post_parent 的标题(即“关于”)。
the_title
不起作用,因为它是子页面的标题。
如何输出post_parent标题?
echo get_the_title( $post->post_parent );
或
echo get_the_title( X );
其中 X 是任何有效的帖子/页面 ID。
无需仅针对一个属性获取完整的 post 对象。
看起来你已经获得了父帖子的ID,所以你可以使用这个:
<?php
$parent_post_id = 6;
$parent_post = get_post($parent_post_id);
$parent_post_title = $parent_post->post_title;
echo $parent_post_title;
?>
(在 $parent_post_id 处插入您的家长帖子 ID)
这是您需要的干净漂亮的代码:
当有多个父层级时也可以保存使用。
<?php
$current = $post->ID;
$parent = $post->post_parent;
$grandparent_get = get_post($parent);
$grandparent = $grandparent_get->post_parent;
?>
<?php if ($root_parent = get_the_title($grandparent) !== $root_parent = get_the_title($current)) {echo get_the_title($grandparent); }else {echo get_the_title($parent); }?>
WordPress 5.7 引入了一个新的辅助函数,可以更轻松地获取父帖子的 ID:
get_parent_post()
这也可以与
has_parent_post()
结合使用,这样你就可以得到类似的东西:
<?php if ( has_parent_post() ) : ?>
<a href="<?php the_permalink( get_parent_post() ); ?>">
<?php the_title( get_parent_post() ); ?>
</a>
<?php endif; ?>
2024 年更新: 这些函数最初被引入为
get_parent_post()
和 has_parent_post()
,但后来已重命名为 get_post_parent()
和 has_post_parent()
。
请注意,这些函数接受“子帖子 ID”作为参数,默认为当前帖子。
我知道这是一个非常老的问题,但万一有人在寻找一些漂亮的俏皮话。在这里:
echo get_the_title( wp_get_post_parent_id( get_the_ID() ) );
如果您想保留标题过滤器:
echo apply_filters( 'the_title', get_the_title( wp_get_post_parent_id( get_the_ID() ) ) );