WordPress:获取 post_parent 标题

问题描述 投票:0回答:6

我创建了一个自定义侧边栏来抓取帖子父页面:

query_posts("post_type=page&post_parent=6"); 

我想获取 post_parent 的标题(即“关于”)。

the_title
不起作用,因为它是子页面的标题。

如何输出post_parent标题?

wordpress parent title
6个回答
38
投票
echo get_the_title( $post->post_parent );

echo get_the_title( X );

其中 X 是任何有效的帖子/页面 ID。

无需仅针对一个属性获取完整的 post 对象。


14
投票

看起来你已经获得了父帖子的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)

参考:http://codex.wordpress.org/Function_Reference/get_post


6
投票

这是您需要的干净漂亮的代码:

当有多个父层级时也可以保存使用。

<?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); }?>

4
投票

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”作为参数,默认为当前帖子。

https://make.wordpress.org/core/2021/02/10/introducing-new-post-parent-lated-functions-in-wordpress-5-7/


3
投票

我知道这是一个非常老的问题,但万一有人在寻找一些漂亮的俏皮话。在这里:

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() ) ) );

1
投票

我写了这个,它会抓取家长的帖子,然后回显家长的标题等。看看并告诉我它是否适合您。

https://gist.github.com/1140481

这甚至应该在 wordpress 循环之外也能工作。

© www.soinside.com 2019 - 2024. All rights reserved.