Php WooCommerce REST API—在单个API请求中获取所有产品及其变体详细信息
我是新来的woo REST API, 我有一个php页面,需要填充所有产品和变体。所以我使用的是Php WooCommerce REST API—在单个API请求中获取所有产品及其变体详细信息,php,wordpress,woocommerce,woocommerce-rest-api,Php,Wordpress,Woocommerce,Woocommerce Rest Api,我是新来的woo REST API, 我有一个php页面,需要填充所有产品和变体。所以我使用的是curlhttps://my_ip/index.php/wp-json/wc/v2/products然后im循环并传递产品id以获得变体,因此在循环内部im使用https://my_ip/index.php/wp-json/wc/v2/products/$variable\u product\u id/variations/但它需要更多的时间加载,因为每个产品都有更多的变体有没有办法在一次请求中获得所
curl
https://my_ip/index.php/wp-json/wc/v2/products
然后im循环并传递产品id以获得变体,因此在循环内部im使用https://my_ip/index.php/wp-json/wc/v2/products/$variable\u product\u id/variations/
但它需要更多的时间加载,因为每个产品都有更多的变体有没有办法在一次请求中获得所有产品和变体
比如:是否可以在class wc rest products controller.php
或任何查询或woocommerce中的任何位置进行定制?这样我才能得到结果
霉菌代码:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://my_ip/index.php/wp-json/wc/v2/products",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_SSL_VERIFYPEER=> false,
CURLOPT_HTTPHEADER => array(
"Authorization: Basic *****************",
"Cache-Control: no-cache"
),
));
$response = curl_exec( $curl) ;
curl_close( $curl );
$Product = json_decode( $response );
//after getting all product. looping all to get variations price.
foreach ( $Product as $row ){
$product_id= $row->id;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://my_ip/index.php/wp-json/wc/v2/products/".$product_id."/variations/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_SSL_VERIFYPEER=> false,
CURLOPT_HTTPHEADER => array(
"Authorization: Basic **************",
"Cache-Control: no-cache"
),
));
$response1 = curl_exec( $curl );
curl_close( $curl );
}
$variations=json_decode( $response1 );
print_r( $variations->price );
// here getting variation of particular product
但我需要的是每种变化的细节(价格)
{
"id": 603,
"date_created": "2018-06-18T12:45:58",
"date_created_gmt": "2018-06-18T12:45:58",
"date_modified": "2018-06-29T06:41:21",
"date_modified_gmt": "2018-06-29T06:41:21",
"description": "",
"sku": "",
"price": "550",
"regular_price": "550",
}
注意:我正在/var/www/html/中创建一个单独的test.php页面。此页面不在任何wp内容内我使用它们完成此操作
每次在循环中重写值-
response1
如果要保存所有值,则需要在数组中添加此值
例如:
<?php
$array = array();
foreach ($Product as $row){
$product_id= $row->id;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://my_ip/index.php/wp-json/wc/v2/products/" . $product_id . "/variations/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_SSL_VERIFYPEER=> false,
CURLOPT_HTTPHEADER => array(
"Authorization: Basic **************",
"Cache-Control: no-cache"
),
));
$array[] = json_decode( curl_exec( $curl ) );
curl_close( $curl );
}
print_r( $array );
是的,这没关系,比如我展示的例子,但问题是我需要api调用中的产品及其变体。您好,先生,这可以在单独的php页面中实现吗?如果可以,如何实现?是的,可以只安装他们的库(如果有composer),然后在您的php类中添加库的use语句<代码>使用Automatic\WooCommerce\Client代码>之后,您将可以使用帮助器类WoocomerCE客户端。以下是有关如何列出所有产品的文档链接。
while (count($woocommerce->get('products',array('per_page' => 100, 'page' => $page))) > 0) {
$all_products = array_merge($all_products,$woocommerce->get('products',array('per_page' => 100, 'page' => $page)));
$page++;
}
if ($source_product->type = "variable") {
$variation = $woocommerce->get('products/'.$source_product->id.'/variations');
foreach ($variation as $source_child) {
//do stuff
}
}
<?php
$array = array();
foreach ($Product as $row){
$product_id= $row->id;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://my_ip/index.php/wp-json/wc/v2/products/" . $product_id . "/variations/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_SSL_VERIFYPEER=> false,
CURLOPT_HTTPHEADER => array(
"Authorization: Basic **************",
"Cache-Control: no-cache"
),
));
$array[] = json_decode( curl_exec( $curl ) );
curl_close( $curl );
}
print_r( $array );