扩展 woocommerce Rest api

2023-12-12

我想扩展 woocommerce Rest api 以包含其“预订”扩展插件的数据。目前此扩展没有其余 api 提供的默认端点。

到目前为止,我已经创建了一个插件,并添加了以下代码;

add_filter( 'woocommerce_rest_prepare_product', 'custom_data');

function custom_data($response, $object) {
        if( empty( $response->data ) )
            return $response;

        $response->data['meta_data'] = get_post_meta( $object[ID], 'availability', true);
        return $response;
    }

当我呼叫终点时/products只有 woocommerce 列出的默认数据仍然被称为我的小插件,但在哪里找不到。

我什至不知道在哪里可以找到上面的过滤器,因为我刚刚在网页上看到了这个,我试图让它做我想做的事,也不知道这是否是正确的方向。网页:https://francescocarlucci.com/woocommerce/woocommerce-api-custom-data-default-endpoints/#more-96

上面是我尝试扩展 api,但我也决定尝试创建一个自定义端点,看看是否可以获得我想要的结果,但到目前为止,我刚刚创建了一个调用的端点,但我不知道要写什么来检索我想要的数据。

自定义端点代码:

function register_custom_route() {
            register_rest_route( 'ce/v1', '/bookable',
                  array(
                    'methods' => 'GET',
                    'callback' => 'get_bookable'
                  )
          );
        }


        function get_bookable( ) {
            return array( 'custom' => 'woocommerce here' );
//What code do I write here :(

        }

无论如何,我可以通过上述方法之一实现我想要的吗? 我对开发人员很陌生,我熟悉 javascript 而不是 PHP,因此我需要使用其余 api,因为我想使用 wordpress/woocommerce 作为无头 cms。

到目前为止,我所看到的壁橱示例已经在这个问题上展示了创建 WooCommerce 自定义 API


或者,您可以尝试以下代码来扩展 WooCommerce REST API 的产品响应,而无需额外执行操作,因为上面的钩子“woocommerce_rest_prepare_product”适用于v1但目前是v3所以最新的钩子在下面一个(下面的钩子来自rest api的v2控制器,由v3扩展)。

add_filter('woocommerce_rest_prepare_product_object', 'so54387226_custom_data', 10, 3);

function so54387226_custom_data($response, $object, $request) {
    if (empty($response->data))
        return $response;
    $id = $object->get_id(); //it will fetch product id 
    $response->data['booking_meta_data'] = get_post_meta($id, 'availability', true);
    return $response;
}

我测试了上面的代码,它工作得很好。希望它可以对寻找类似解决方案的人有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

扩展 woocommerce Rest api 的相关文章

随机推荐