我正在运行WordPress 4.9.8,带有Genesis主题(可能不相关,但…)。我希望在构建页面时(而不是通过AJAX调用调用API)将一些从REST API直接拉入的JSON写入脚本标记,以提高snappier性能。
幸运的是,WP为这种情况提供了WP\\U REST\\U请求。所以我写了一些代码如下:
功能。php
add_action(\'wp_head\', \'write_json_to_script_tag\');
function write_json_to_script_tag(){
$request = new WP_REST_Request( \'GET\', \'/wp-json/wp/v2/pages/499/\');
$response = rest_do_request( $request );
var_dump($response);
$server = rest_get_server();
$data = $server->response_to_data( $response, false );
$json = wp_json_encode( $data );
echo \'<script type="text/javascript"> var the_json = \' . $json . \'</script>\';
}
当我击中
https://example.com/wp-json/wp/v2/pages/499 在浏览器中,它生成的正是我所期望的json。当我卷曲这个url时,我得到了相同的结果。但我的服务器代码返回{代码:“rest\\u no\\u route”,消息:“找不到与URL和请求方法匹配的路由”,…..}
最合适的回答,由SO网友:Sally CJ 整理而成
路线不应包括/wp-json
零件,并且不应该有尾部斜杠(/
) 最后:
错误:/wp-json/wp/v2/pages/499/
正确:/wp/v2/pages/499
因此:
$request = new WP_REST_Request( \'GET\', \'/wp/v2/pages/499\' );