【问题标题】:How to get title from WP_Post Object如何从 WP_Post 对象获取标题
【发布时间】:2013-08-07 06:55:26
【问题描述】:

我试图查看带有一些描述的子页面名称列表以显示..我使用下面的代码

$my_wp_query = new WP_Query();
$all_wp_pages = $my_wp_query->query(array('post_type' => 'page'));
// Get the page as an Object
$portfolio =  get_page_by_title('service');
// Filter through all pages and find Portfolio's children
$portfolio_children = get_page_children( $portfolio->ID, $all_wp_pages );
// echo what we get back from WP to the browser
echo "<pre>";print_r(
);

foreach($portfolio_children as $pagedet):

        echo $pagedet['post_title'];


 endforeach;

我在使用 foreach 之前获取数组

when i print  $portfolio_children iam getting out put like this 
 Array
(
 [0] => WP_Post Object
    (
        [ID] => 201  
         [post_title] => Website Hosting
     )
  [1]=> WP_Post Object

      (
              [ID] => 202  
         [post_title] => Website
      )

在 foreach 之后如果我打印 $pagedet iam getting

WP_Post Object
    (
        [ID] => 201  
       [post_title] => Website Hosting
     )

我尝试调用 $pagedet['post_title'] 但 id 没有显示任何内容...提前致谢

【问题讨论】:

  • 您使用的是关联数组表示法,而不是对象表示法。你应该打电话给:$pagedet-&gt;post_title
  • 在循环中试试这个echo $pagedet-&gt;post_title

标签: php wordpress foreach


【解决方案1】:

这是从我的笔记中得到的,我正在处理你的确切情况。希望对您有所帮助。

<?php 

    $my_wp_query = new WP_Query();
     $all_wp_pages = $my_wp_query->query(array('post_type' => 'page', 'posts_per_page' => -1));

    $childpg = get_page_children(8, $all_wp_pages);

    foreach($childpg as $children){
        $page = $children->ID;
        $page_data = get_page($page);
        $content = $page_data->post_content;
        $content = $page_data->the_title;
        $content = apply_filters('the_content',$content);
        $content = str_replace(']]>', ']]>', $content);
        echo '<div class="row-fluid"><span class="span4">'; 
        echo get_the_post_thumbnail( $page ); 
        echo '</span><span class="span8">'.$content.'</span></div>';
    } 
    ?>

【讨论】:

    【解决方案2】:

    为了确定,您应该使用每个页面数据作为列名。

    例如,

    $page_data->post_content //is true,
    $page_data->the_title // is false.
    

    【讨论】:

      【解决方案3】:

      试试这个。只是给出想法。

      <?php 
          $post = get_post($_GET['id']); 
          $post->post_title;
       ?>
      

      【讨论】:

        【解决方案4】:

        替换上面的foreach:

        获取对象数组 ([0],[1],[2]...) 并将(每个)设置为 $pagedet 的单个实例。

        foreach($portfolio_children as $pagedet) {
        

        现在创建变量 $post_title 以等于数组中每个对象的“post_title”值。

        $post_title = $pagedet->post_title;
        

        这在技术上是可行的,但您希望以编程方式循环遍历每个实例,而不需要识别数组中的每个对象。

        echo $pagedet[0]->post_title;
        echo $pagedet[1]->post_title;
        echo $pagedet[2]->post_title;
        

        现在你可以写出每个 post_title 的值了:

        echo $post_title;
        };
        

        总结

        foreach($portfolio_children as $pagedet) {
            $post_title = $pagedet->post_title;
            echo $post_title;
        };
        

        【讨论】:

          猜你喜欢
          • 2015-12-13
          • 1970-01-01
          • 2019-04-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-11
          • 2017-11-26
          相关资源
          最近更新 更多