Wordpress 使用WooCommerce API根据SKU更新产品库存数量?
我想用Woocommerce API更新产品库存。 我通过查询产品ID并使用以下代码实现了这一点:Wordpress 使用WooCommerce API根据SKU更新产品库存数量?,wordpress,api,rest,woocommerce,sku,Wordpress,Api,Rest,Woocommerce,Sku,我想用Woocommerce API更新产品库存。 我通过查询产品ID并使用以下代码实现了这一点: curl -X PUT \ https://www.kilikili.be/wp-json/wc/v3/products/10340 \ -H ... -b ... -d '{ "manage_stock": true, "stock_quantity": "1" }' 但是,现在我想通过使用sku来做同样的事情。 我试过这个: curl -X PUT \ '
curl -X PUT \
https://www.kilikili.be/wp-json/wc/v3/products/10340 \
-H ...
-b ...
-d '{
"manage_stock": true,
"stock_quantity": "1"
}'
但是,现在我想通过使用sku来做同样的事情。
我试过这个:
curl -X PUT \
'https://www.kilikili.be/wp-json/wc/v3/products?sku=test' \
-H ...
-b ...
-d '{
"manage_stock": true,
"stock_quantity": "2"
}'
然而,我得到了以下响应:
{
"code": "rest_no_route",
"message": "No route was found matching the URL and the request method",
"data": {
"status": 404
}
}
关于如何实现这一目标,或者是否可能实现这一目标,你有什么想法吗 所以我今天刚做了这个,您确实需要编写一个手动API。下面我的API按SKU和数量获取产品列表,并更新其所有数量。简单的修改为您只做1个产品
//API for product sync//
add_action( 'rest_api_init', 'my_register_prod_sync' );
function my_register_prod_sync(){
register_rest_route(
'custom',
'prodsync',
array(
'methods' => 'PUT',
'callback' => 'prodsync',
'permission_callback' => 'check_access'
)
);
}
function prodsync(WP_REST_Request $request) {
$totalamended = 0;
//$body = $request->get_body();\
$intentToPut = $request->get_body();
$data = json_decode($intentToPut, true);
foreach($data['products'] as $result) {
//echo $result['id'], '<br>';
$stockqty = $result['qty'];
$sku = $result['sku'];
global $wpdb;
$idgrab = $wpdb->get_results("SELECT post_id from wp_25db5fe0d1_postmeta
where meta_value = $sku");
if ($idgrab){
$postidtwo = $idgrab[0]->post_id;
$updateresults = $wpdb->query("UPDATE wp_25db5fe0d1_postmeta
SET meta_value = $stockqty
WHERE meta_key = '_stock'
AND post_id = $postidtwo ");
$totalamended = $totalamended += $updateresults;
}
}
return rest_ensure_response($totalamended);
}
//用于产品同步的API//
添加操作('rest\u api\u init'、'my\u register\u prod\u sync');
函数my\u register\u prod\u sync(){
登记休息路线(
"习俗",,
“prodsync”,
排列(
'方法'=>'放置',
“回调”=>“产品同步”,
“权限\u回调”=>“检查访问”
)
);
}
功能prodsync(WP\u REST\u Request$Request){
$total=0;
//$body=$request->get_body()\
$intentput=$request->get_body();
$data=json_decode($intentput,true);
foreach($data['products']作为$result){
//echo$result['id'],“
”;
$stockqty=$result['qty'];
$sku=$result['sku'];
全球$wpdb;
$idgrab=$wpdb->get_results(“从wp_25db5fe0d1_postmeta中选择post_id
其中meta_值=$sku”);
如果($idgrab){
$postedtwo=$idgrab[0]->post_id;
$updateresults=$wpdb->query(“更新wp_25db5fe0d1_postmeta
设置元值=$stockqty
其中meta_key=“_stock”
和post_id=$postedtwo”);
$TotalModified=$TotalModified+=$updateresults;
}
}
返回rest\u sure\u响应($totalmodified);
}
所以我今天刚刚做了这件事,您确实需要编写一个手动API。下面我的API按SKU和数量获取产品列表,并更新其所有数量。简单的修改为您只做1个产品
//API for product sync//
add_action( 'rest_api_init', 'my_register_prod_sync' );
function my_register_prod_sync(){
register_rest_route(
'custom',
'prodsync',
array(
'methods' => 'PUT',
'callback' => 'prodsync',
'permission_callback' => 'check_access'
)
);
}
function prodsync(WP_REST_Request $request) {
$totalamended = 0;
//$body = $request->get_body();\
$intentToPut = $request->get_body();
$data = json_decode($intentToPut, true);
foreach($data['products'] as $result) {
//echo $result['id'], '<br>';
$stockqty = $result['qty'];
$sku = $result['sku'];
global $wpdb;
$idgrab = $wpdb->get_results("SELECT post_id from wp_25db5fe0d1_postmeta
where meta_value = $sku");
if ($idgrab){
$postidtwo = $idgrab[0]->post_id;
$updateresults = $wpdb->query("UPDATE wp_25db5fe0d1_postmeta
SET meta_value = $stockqty
WHERE meta_key = '_stock'
AND post_id = $postidtwo ");
$totalamended = $totalamended += $updateresults;
}
}
return rest_ensure_response($totalamended);
}
//用于产品同步的API//
添加操作('rest\u api\u init'、'my\u register\u prod\u sync');
函数my\u register\u prod\u sync(){
登记休息路线(
"习俗",,
“prodsync”,
排列(
'方法'=>'放置',
“回调”=>“产品同步”,
“权限\u回调”=>“检查访问”
)
);
}
功能prodsync(WP\u REST\u Request$Request){
$total=0;
//$body=$request->get_body()\
$intentput=$request->get_body();
$data=json_decode($intentput,true);
foreach($data['products']作为$result){
//echo$result['id'],“
”;
$stockqty=$result['qty'];
$sku=$result['sku'];
全球$wpdb;
$idgrab=$wpdb->get_results(“从wp_25db5fe0d1_postmeta中选择post_id
其中meta_值=$sku”);
如果($idgrab){
$postedtwo=$idgrab[0]->post_id;
$updateresults=$wpdb->query(“更新wp_25db5fe0d1_postmeta
设置元值=$stockqty
其中meta_key=“_stock”
和post_id=$postedtwo”);
$TotalModified=$TotalModified+=$updateresults;
}
}
返回rest\u sure\u响应($totalmodified);
}
显然,这可以通过创建一个自定义端点来实现,我目前正在尝试使用以下文档:Hi@BarrieO,找到解决方法了吗?有什么解决方案可以与我们分享吗?谢谢显然,这可以通过创建一个自定义端点来实现,我目前正在尝试使用以下文档:Hi@BarrieO,找到解决方法了吗?有什么解决方案可以与我们分享吗?谢谢