从 Post 获取渲染的 HTML 块模板

问题描述 投票:0回答:1

我对 WordPress 并不陌生,但我对 gutenberg api 有疑问。

我想通过 id 获取单个帖子以及该 ID 的渲染帖子模板。但我不知道如何解决这个问题,因为法典没有给我这些信息。

因此,当我请求

https://example.com/wp-json/wp/v2/posts/1
时,我得到的不是默认的帖子模板块渲染的内容 html,而是
post_content
渲染的内容。 所以我的问题是如何从 HTML 中呈现的自定义帖子类型访问详细信息元素(单个视图)。所以我们在经典主题中我可以使用 get_template_part 和帖子的 ID 轻松获取此渲染内容。

那么我如何从帖子中访问单个视图的渲染 html 内容。

wordpress wordpress-rest-api wordpress-gutenberg
1个回答
0
投票

要实现所需的结果,您需要创建一个自定义

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

访问它
© www.soinside.com 2019 - 2024. All rights reserved.