Wordpress 如何使用 WP_REST_Posts_Controller 获取特定的帖子数据

Posted

技术标签:

【中文标题】Wordpress 如何使用 WP_REST_Posts_Controller 获取特定的帖子数据【英文标题】:Wordpress how to get specific post data using WP_REST_Posts_Controller 【发布时间】:2021-11-01 00:51:44 【问题描述】:

如何在 foreach 循环中获取特定的帖子数据? (仅以标题为例)

这是我的 php(返回所有帖子数据):

function myspace_get_posts_by_tag(WP_REST_Request $request) 
    
    $slug = $request['slug'];
    $page = $request['page'];

    $term = get_term_by('slug', $slug, 'post_tag');
    $posts_per_page = 1;

    $args = array(
        'tag__in'           => $term->term_id,
        'posts_per_page'    => $posts_per_page,
        'paged'             => $page,
        'orderby'           => 'date',
        'order'             => 'desc',
    );

    $query = new WP_Query( $args ); 

    $max_pages = $query->max_num_pages;
    $total = $query->found_posts;

    $posts = $query->posts;

    $controller = new WP_REST_Posts_Controller('post');

    foreach ( $posts as $post ) 

        $response = $controller->prepare_item_for_response( $post, $request );
        $data[] = $controller->prepare_response_for_collection( $response );            

    
   
    $response = new WP_REST_Response($data, 200);
    $response->header( 'X-WP-Total', $total ); 
    $response->header( 'X-WP-TotalPages', $max_pages );
    return $response;
    

为了举例,我删减了一些代码。

【问题讨论】:

$post->post_title 不工作吗? (在 foreach 循环中) 是的,它有效:$data["posts"][] = array( "id" => $post->ID, "title" => $post->post_title ); 摆脱://$response = $controller->prepare_item_for_response($post, $request); //$data[] = $controller->prepare_response_for_collection($response) ? 酷。如果有帮助,我可以将其添加为您批准的答案吗? 是的,你可以添加它 很好,已添加,如果您能接受,我将不胜感激。 【参考方案1】:

您正在使用WP_Query() 稍后在 foreach 循环中获取帖子。

在这种情况下,$post 是 WP_Post Object。所以你可以访问它的属性,在你的情况下 - 帖子的标题:

$post->post_title

【讨论】:

以上是关于Wordpress 如何使用 WP_REST_Posts_Controller 获取特定的帖子数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在wordpress 3.0中使用自定义分类法

如何使用 MariaDB 安装 wordpress?

如何使用 WordPress 进行自定义查询?

如何使用wordpress + django搭建网站

#WordPress小技巧#如何实现WordPress支持多个域名绑定/访问

wordpress如何实现企业网站在线留言的功能!