多请求外部数据API动态块Gutenberg

时间:2021-08-27 作者:Renan Bessa

我有一个gutenberg动态块,它向外部api发出请求,以返回要在前端渲染的特定数据。然而,有些帖子有超过15个块,也就是说,有15个请求,因此这会减慢网站的速度。是否有任何方法可以优化此请求?

下面是今天返回数据的函数

Function

function requestApi() {
        $arguments = [
            \'method\' => \'GET\',
        ];

        $request = wp_remote_get( \'https://example.com.br/api/endpoint/product-id\', $arguments );
        if (is_wp_error($request)) {
            $error_message = $request->get_error_message();
            echo "Error {$error_message}";
        }

        $body = wp_remote_retrieve_body( $request );
        $values = json_decode( $body );

        return $values;
    }

1 个回复
SO网友:Phillip Schmanau

您可以使用瞬态:

function requestApi() {
    $cache_key = \'your_transient_name\';
    $values = get_transient( $cache_key );

    // if no data in the cache
    if ( $values === false ) {

        // build the URL for wp_remote_get() function
        $arguments = [
            \'method\' => \'GET\',
        ];
        $request = wp_remote_get( \'https://example.com.br/api/endpoint/product-id\', $arguments );
        
        if ( !is_wp_error( $request ) && wp_remote_retrieve_response_code( $request ) == 200 ) {
            $values = json_decode( wp_remote_retrieve_body( $request ) );
            // print_r( $values ); // use it to see all the returned values!

            set_transient( $cache_key, $values, 7200 ); // 2 hours cache
        } else {
            return; // you can use print_r( $values ); here for debugging
        }
        
    }
    return $values;
}
使用此解决方案,远程查询通过瞬态缓存,瞬态存储在wp\\u选项中,并以任意时间间隔重新请求。

这将为您节省宝贵的资源。

这里更详细地描述了原理:

相关推荐

在函数中添加可点击函数。php-解析错误

我试图将onclick事件添加到div中。但Wordpress一直说我的函数未定义。未捕获引用错误:未定义thfull函数thfull(){echo";document.getElementById(\'thf\')。style.maxHeight=\'1000px\';}add\\u action(\'wp\\u enqueue\\u scripts\',\'thfull\');html:<;div class=“div class=”;缩略图“;id=“”;thf“;onclick=“”;