自定义API端点从类别获取数据

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

我陷入困境..我尝试使用 Wordpress REST API 从特定类别 ID 获取所有帖子数据。但它不输出内容,只输出 ID 和标题..看不到我做错了什么..

代码如下:

/* Register Route  http://dev.mpblogg.se/wp-json/api/v1/feedposts/id */
add_action( 'rest_api_init', function () {
    register_rest_route( 'api/v1', '/feedposts/(?P<id>\d+)', array(
        'methods' => 'GET',
        'callback' => 'getAllPostsfromCategory',
    ));
});


/* Get all posts from the specific Caetgory */
function getAllPostsfromCategory( $data ) {
$secret = '2lpMh5EHaEiavhMONpWD';
$qs = explode('&', $_SERVER['QUERY_STRING'])[0];
$qs = explode('=', $qs)[1];
if($qs != $secret){
    return false;
}
$posts = get_posts( array(
    'category' => $data['id'],
));

$returnArray = array();

foreach($posts as $post) {
    array_push($returnArray, array(
        'id'    =>      $post->ID,
        'title'     =>      $post->post_title,
        'content'   =>      $post->post_content
    ));
}

// die();

if(empty($posts)){
    return null;
}
return $returnArray;
}

JSON 输出如下所示:

enter image description here

改为 array_push($returnArray,$post); 后它看起来像这样:

enter image description here

php wordpress api
2个回答
0
投票

好吧...这是我从您共享的 array_push 图像中获得的线索。 JSON 输出的最后一个字符串为:

“文件管理器”:“原始”

这意味着结果值将存储为原始的、未经过滤的帖子内容。

所以,你可以尝试在提取的内容中添加apply_filters(),看看是否可以帮助你显示所需的内容。

$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]&gt;', $content);
echo $content;

这用于将内容过滤器应用于原始的未过滤的帖子内容,通常来自 $post->post_content 的使用。


0
投票

像往常一样,为什么它不起作用的答案是如此愚蠢。我没有使用 the_content。我使用 ACF 中名为 post_excerpt 的自定义字段。所以我只是添加:

'excerpt'   =>  get_field('post_excerpt', $post->ID),

现在可以了..抱歉,但感谢所有的帮助。

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