【问题标题】:WordPress: get post_parent titleWordPress:获取 post_parent 标题
【发布时间】:2011-07-09 01:34:34
【问题描述】:

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

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

我想获取 post_parent 的标题(即“关于”)。 the_title 不起作用,因为它是子页面的标题。

如何输出 post_parent 标题?

【问题讨论】:

    标签: wordpress parent title


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我知道这是一个非常老的问题,但万一有人在寻找一些不错的单线。这里是:

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

      【讨论】:

        【解决方案3】:

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

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

        <?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】:

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

          【讨论】:

          • 很抱歉我没有完全理解。假设我的父帖子 ID 是 6。代码应该是 post_title; ?>?如果是这样,它是否需要在循环中,或者前面的简单回声是否有效?
          • 对不起,没有让我编辑上面的评论。请参阅上面的代码编辑版本。它不需要在循环中,你可以这样做:&lt;?php $parent_post_id = 6; $parent_post = get_post($parent_post_id); $parent_post_title = $parent_post-&gt;post_title; echo $parent_post_title; ?&gt;
          • 刚刚找到不需要硬编码页面ID的代码:$parent_title = get_the_title($post->post_parent); echo $parent_title;
          • @Ryan Niiii​​iice!这就是人们通过搜索访问此页面的内容。无需硬编码,无需浪费时间,只需 c/p 即可。 :-)
          • 您能否将此代码作为答案发布在下面并将标记从该答案更改为新答案?
          【解决方案5】:

          我写了这个,它会抓取父帖子,然后回显父标题等。看看,让我知道它是否适合你。

          https://gist.github.com/1140481

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

          【讨论】:

            【解决方案6】:
            echo get_the_title( $post->post_parent );
            

            或

            echo get_the_title( X );
            

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

            无需为一个属性获取完整的帖子对象。

            【讨论】:

            • 谢谢!这很好很干净,正是我所需要的
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-12
            • 2014-06-03
            • 1970-01-01
            • 2016-10-14
            • 2017-06-08
            • 1970-01-01
            相关资源
            最近更新 更多