WordPress REST API-JSON“呈现”的内容不正确

时间:2018-04-13 作者:monsieur Moumni

我正在使用android应用程序,使用wordpress rest api将博客从网站转到,我对php或wordpress没有任何知识,但我花了一些时间来了解它,我的问题是json。内容包含未知段落,我不知道如何解决此问题,请帮助android applicationjsonyoutube video

3 个回复
最合适的回答,由SO网友:Mat 整理而成

您所指的内容来自该网站上优雅的主题页面生成器插件。

页面生成器使用WordPress Shortcodes 在WordPress网站上呈现内容。但是,当您使用REST API时,将从WordPress数据库中提取内容,并且不会首先处理/呈现短代码。

在返回的JSON显示在应用程序中之前,您需要删除其中的短代码。在应用程序中显示内容之前,您可以使用类似的方法删除短代码:

// Remove Divi/ET Page Builder shortcodes
$content = preg_replace(\'/\\[\\/?et_pb.*?\\]/\', \'\', $content);

SO网友:Joe

您可以将此代码放置在主题函数中。php文件:

function awh_filter_post_json( $data, $post, $context ) {
    $data = json_encode($data); //convert array or object to JSON string
    $data = preg_replace(\'/\\[\\/?et_pb.*?\\]/\', \'\', $data); //remove shortcodes
    $data = json_decode($data); //convert JSON String to array or object
    return $data;
}

add_filter( \'rest_prepare_post\', \'awh_filter_post_json\', 10, 3 );

SO网友:Lukid

感谢其他答案,我这样解决了它(在我的WP theme functions.php文件中):

add_filter( \'rest_prepare_post\', \'lb_filter_post_content\', 11, 3 );

function lb_filter_post_content($data, $post, $context){
    // remove shortcode just on content > rendered
    $data->data["content"]["rendered"] = preg_replace(\'/\\[\\/?et_pb.*?\\]/\', \'\', $data->data["content"]["rendered"]);
    return $data;
}

PS.带“的短代码”;et\\U pb“;由于Divi主题在WP及其页面生成器上使用,所以我只删除了这些短代码。我在函数中编写了上述内容。我的Divi子主题的php。如果您想修复WP端问题,此解决方案是很好的,而WP端问题正是产生此问题的地方。

结束