REST API를 이용하여 우커머스의 모든 제품 가져오기
rest api를 이용해서 모든 제품을 회수하려고 합니다.저는 이 질문을 읽은 적이 있습니다.저는 집배원을 이용해서 전화를 걸고 있습니다.여기 제 질문이 있습니다.
https://squatwolf.com/wp-json/wc/v2/products?filter[posts_per_page] =-1
쿼리에는 10개의 결과만 표시됩니다.
이것은 최신 API 끝점이 아닙니다.
/wc-api/v3/products?filter[limit]=
페이지당 페이지를 가져와야 모든 제품을 얻을 수 있습니다.
$page = 1;
$products = [];
$all_products = [];
do{
try {
$products = $wc->get('products',array('per_page' => 100, 'page' => $page));
}catch(HttpClientException $e){
die("Can't get products: $e");
}
$all_products = array_merge($all_products,$products);
$page++;
} while (count($products) > 0);
다음과 같은 솔루션을 사용하여 데이터를 찾을 수 있었습니다.
https://squatwolf.com/wc-api/v3/products?filter[limit] =-1
저는 이게 통했어요.API v3 포함
/wc-api/v3/products?
기본적으로 처음 500개의 제품을 검색합니다.
/wc-api/v3/products?per_page=900
900개의 상품을 받기 위해서는
function maximum_api_filter($query_params) {
$query_params['per_page']['maximum'] = 10000;
$query_params['per_page']['default'] = 500;
return $query_params;
}
add_filter('rest_product_collection_params', 'maximum_api_filter', 10, 1 );
그filter
파라미터는 더 이상 지원되지 않습니다. 문서를 참조하십시오.그래서 당신은 정말로 그 페이지들을 돌려야 합니다.
다음은 모든 제품을 자바스크립트로 얻는 방법입니다(구텐베르크 블록 스토어의 경우).
let allProducts = [],
page = 1
while (page !== false) {
const products = yield actions.receiveProducts(`/wc-pb/v3/products?per_page=100&page=${page}`)
if (products.length) {
allProducts = allProducts.concat(products)
page++
} else {
page = false // last page
}
}
return actions.setProducts(allProducts)
함수에 코드를 추가합니다.
function maximum_api_filter($query_params) {
$query_params['per_page']["maximum"]=100000;
return $query_params;
}
add_filter('rest_product_collection_params', 'maximum_api_filter');
간단해요!!!100 대신 어떤 숫자라도 사용할 수 있습니다.https://woocommerce.github.io/woocommerce-rest-api-docs/ #list-allproducts에 적혀있는 매개변수일 뿐입니다.
https://squatwolf.com/wp-json/wc/v2/products?per_page=100
/wp-json/wc/v2/products
그리고.
/wc-api/v3/products
둘 다 작동하는 것 같지만, 제가 사용하고 있는 제품의 개수를 파악하기 위해서입니다.
/wc-api/v3/products?filter[limit]=
제품의 개수를 거기에 넣습니다. -1개의 제품에 해당합니다.
노드에 대하여JS:
export const getAllProducts = async () => {
let allProducts = []
let breakLoop = false
let page = 1
while (!breakLoop) {
const products = await api.get("products", { page })
.then((response) => {
return response.data
})
.catch((error) => {
console.log(error.response.data);
})
if (products.length === 0 || !products){
breakLoop = true
} else {
allProducts = allProducts.concat(products)
page = page + 1
}
}
return allProducts
}
만약 라라벨 패키지를 사용한다면, 예를 들어codexshaper/laravel-woocommerce
아니면corcel/woocommerce
또는 다른 패키지도 있습니다. WooCommerce 웹사이트의 제품 종류에 주의하세요.전화할 때 기본적으로$products = Product::all();
그것은 단지 당신에게 제품을 줄 뿐입니다.simple
상품형의
다음은 WooComce의 기본 제품 유형 목록입니다.
'simple', 'grouped', 'external', 'variable', 'external', 'subscription', 'variable-subscription'
그래서 다른 제품을 받고 싶은 제품 종류를 지정해야 합니다.
$product = WooProduct::all(['per_page'=> '100','type'=>'simple']);
언급URL : https://stackoverflow.com/questions/48476534/get-all-products-from-woocommerce-using-rest-api
'programing' 카테고리의 다른 글
jQuery로 JSON ajax 요청에서 404의 함수를 콜백하는 방법은 무엇입니까? (0) | 2023.10.09 |
---|---|
Win32 API를 사용하여 USB 드라이브를 안전하게 제거하시겠습니까? (0) | 2023.10.09 |
가상 상자 오라클 상자에 파일을 복사하는 방법 (0) | 2023.10.09 |
'...'의 조인 유형은 무엇입니까?A인 곳에아이디 = B.아이디(+) (0) | 2023.10.09 |
실행 중인 스크립트의 소스 경로는 어떻게 찾을 수 있습니까? (0) | 2023.10.09 |