我是Wordpress开发的新手;试图从自定义端点返回图像,但它似乎希望将所有内容序列化为JSON。
我确实使用了echo
. 那是黑客吗?
我还尝试使用WP_HTTP_Response
, 但这似乎不起作用。
我的代码:
require \'vendor/autoload.php\';
use Intervention\\Image\\ImageManagerStatic as Image;
function prefix_generate_cover_photo($data) {
$image = Image::make(plugin_dir_path(__FILE__) . \'image.png\')->response();
$response = new WP_REST_Response($image, 200, array(
\'Content-Type\' => \'image/png\'
));
return $response;
}
add_action( \'rest_api_init\', function () {
register_rest_route( \'prefix/v1\', \'/photo\', array(
\'methods\' => \'GET\',
\'callback\' => \'prefix_generate_cover_photo\',
));
});
这是可行的,但我不确定这是否是一种好的做法:
function prefix_generate_cover_photo($data) {
echo Image::make(plugin_dir_path(__FILE__) . \'image.png\')->response();
}
有什么想法吗?
SO网友:Mostafa Soufi
echo
在rest api中,无效!您应该使用return
输出到Rest API。
例如:
function prefix_generate_cover_photo( WP_REST_Request $request ) {
// Get method params
$params = $request->get_params();
// Data
$data = array(
\'url\' => \'The image url\',
\'title\' => \'The image title\',
);
// Create the response object
$response = new WP_REST_Response( array( \'image\' => $data ) );
// Add a custom header (Optional)
//$response->header( \'Cache-Control\', \'no-cache\' );
return $response;
}