过滤REST API中的帖子内容

时间:2018-09-15 作者:tmdesigned

我试图允许插件在为WP API呈现帖子之前修改帖子的呈现内容,或者至少将其保存为JSON响应上的一个单独属性。

例如,假设有一个插件可以从

以下是一些内容:foo

这里有一些内容:酒吧

它的设置是使用the\\u post过滤器对前端进行修改。但REST api不受影响。我尝试过使用rest\\u prepare\\u post过滤器,但(a)直接修改渲染内容显然是一种不好的做法,所以我将其作为附加属性?(b)很难处理--如果我尝试将$data->$data[\'content\'][\'rendered\']分配给变量,我会得到一条消息,即我正在尝试将WP Rest响应对象转换为字符串。然而,如果我将相同的变量输出到错误日志中,它就可以正常工作。

add_filter( \'rest_prepare_post\', array( __CLASS__, \'beforeFilterRest\' ), 0, 2 );

public static function beforeFilterRest( $data, $post ){

            $old_rendered_content = $data->$data[\'content\'][\'rendered\'];
            $data->$data[\'content\'][\'rendered\'] = preg_replace_callback(
                "/\\s*<pre(?:lang=[\\"\']([\\w-]+)[\\"\']|line=[\\"\'](\\d*)[\\"\']|escaped=[\\"\'](true|false)?[\\"\']|highlight=[\\"\']((?:\\d+[,-])*\\d+)[\\"\']|src=[\\"\']([^\\"\']+)[\\"\']|\\s)+>(.*)<\\/pre>\\s*/siU",
                array( __CLASS__, \'substituteToken\' ),
                $old_rendered_content
            ); 
            return $data;
    }
我在函数的第一行得到一个错误。我错过了什么?

1 个回复
最合适的回答,由SO网友:Pat J 整理而成

我觉得你好像写了$data->$data[...] 你想去哪里$data->data[...]. “object to string”转换错误可能是由于第二个$data, 其中,PHP需要对象的属性名,但正在获取对$data 对象

结束

相关推荐

Php致命错误:无法将WP_REST_RESPONSE类型的对象用作wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php中

我向WordPress添加了一个自定义端点,如下所示: add_action( \'rest_api_init\', function () { register_rest_route( \'menc/v1\', \'/crosscat/(?P[\\w-]+)/(?P[\\w-]+)\', array( \'methods\' => \'GET\', \'callback\' => \'dept_cat_api\',&#x