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 获取特定的帖子数据的主要内容,如果未能解决你的问题,请参考以下文章