【发布时间】:2011-07-09 01:34:34
【问题描述】:
我创建了一个自定义侧边栏来抓取帖子父页面:
query_posts("post_type=page&post_parent=6");
我想获取 post_parent 的标题(即“关于”)。 the_title 不起作用,因为它是子页面的标题。
如何输出 post_parent 标题?
【问题讨论】:
我创建了一个自定义侧边栏来抓取帖子父页面:
query_posts("post_type=page&post_parent=6");
我想获取 post_parent 的标题(即“关于”)。 the_title 不起作用,因为它是子页面的标题。
如何输出 post_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; ?>
请注意,这些函数接受“子帖子 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() ) ) );
【讨论】:
这是你需要的干净漂亮的代码:
当有多个父层级时也可以保存使用。
<?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); }?>
【讨论】:
看起来你已经得到了父帖子的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 $parent_post_id = 6; $parent_post = get_post($parent_post_id); $parent_post_title = $parent_post->post_title; echo $parent_post_title; ?>
【讨论】:
echo get_the_title( $post->post_parent );
或
echo get_the_title( X );
其中 X 是任何有效的帖子/页面 ID。
无需为一个属性获取完整的帖子对象。
【讨论】: