如何避免 WP REST API 中 JSON 数据中的 html 实体?

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

在 WordPress 网站中使用 WP REST API 获取 JSON 数据时如何解码 –、“ 等。 一些最新的 android webview 无法解码它。

json wordpress wordpress-rest-api html-encode wordpress-plugin-creation
3个回答
0
投票

将此代码添加到您的主题中

functions.php
,它充当中间件,在将实体提供给 API 之前解析实体。

function fix_decode_rest_api($response, $post, $request) {

    if (isset($post)) {
        
        $decodedTitle = html_entity_decode($post->post_title);
        $response->data['title']['rendered'] = $decodedTitle;
 
        
        $decodedPostTitle = html_entity_decode($response->data['title']['rendered']);
        $response->data['title']['rendered'] = $decodedPostTitle;
    }
    return $response;
}
add_filter('rest_prepare_post', 'fix_decode_rest_api', 10, 3);

0
投票

只需解码请求中的字符串,而不是再次调用数据库。您已经在 $response 中拥有了要解码的内容

$response->data['title']['rendered'] = html_entity_decode($response->data['title']['rendered']);

0
投票

此线程上的答案没有完全解释。基本上,我们需要解码 HTML 并直接将其解析为 JSON。 您可以在functions.php文件中添加以下内容:

function fix_decode_rest_api($response, $post, $request) {
 if (isset($response->data[ 'title' ][ 'rendered' ])) {
    $decodedTitle = html_entity_decode($response->data[ 'title' ][ 'rendered' ]);
    $response->data[ 'title' ][ 'rendered' ] = $decodedTitle;
 }
 return $response;
}
add_filter('rest_prepare_post', 'fix_decode_rest_api', 11, 3);
© www.soinside.com 2019 - 2024. All rights reserved.