我对 WordPress 并不陌生,但我对 gutenberg api 有疑问。
我想通过 id 获取单个帖子以及该 ID 的渲染帖子模板。但我不知道如何解决这个问题,因为法典没有给我这些信息。
因此,当我请求
https://example.com/wp-json/wp/v2/posts/1
时,我得到的不是默认的帖子模板块渲染的内容 html,而是 post_content
渲染的内容。
所以我的问题是如何从 HTML 中呈现的自定义帖子类型访问详细信息元素(单个视图)。所以我们在经典主题中我可以使用 get_template_part 和帖子的 ID 轻松获取此渲染内容。
那么我如何从帖子中访问单个视图的渲染 html 内容。
要实现所需的结果,您需要创建一个自定义
REST API endpoint
来返回渲染的帖子。
为了创建自定义 REST API 端点,请将给定的代码添加到您主题的
functions.php file
或自定义插件中。
function get_rendered_post_template_data($data) {
$post_id = $data['id'];
$post = get_post($post_id);
if ( !$post ) {
return new WP_Error( 'no_post', 'Post not found', array('status' => 404) );
}
setup_postdata($post);
ob_start();
// Here you can adjust the template part if you have specific ones for different post types
get_template_part('single', $post->post_type);
$rendered_html = ob_get_clean();
wp_reset_postdata();
return array(
'id' => $post_id,
'title' => get_the_title($post),
'content' => $rendered_html,
);
}
function register_custom_routes() {
register_rest_route( 'custom/v1', '/rendered-post-data/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'get_rendered_post_template_data',
));
}
add_action( 'rest_api_init', 'register_custom_routes' );
我们可以通过在我们创建的
GET request
上添加 custom endpoint
来访问渲染的帖子。
例如,如果您的网站是
https://domain-name
那么应该使用 https://domain-name/wp-json/custom/v1/rendered-post-data/1
访问它