[API] Thêm sản phẩm WooCommerce sử dụng REST API
https://www.hoangweb.com/tai-nguyen/them-san-pham-woocommerce-su-dung-rest-api
WooCommerce có tích hợp REST API, cho phép chúng ta thêm các sản phẩm mới vào cửa hàng thông qua giao diện API. Trong bài viết này, mình sẽ chỉ cho bạn cách làm điều này.
Cài đặt thư viện PHP cho WooCommerce REST API
Tải thư viện chính thức cho WooCommerce REST API, cho phép sử dụng API – thông qua cURL – với Node.js, PHP, Python và Ruby. Cài đặt với composer.
1
composer require automattic/woocommerce
Thêm mã khởi tạo để kết nối vào WooCommerce.
123456789101112131415161718
// Load Composer autoloader.// @link
https://github.com/brightnucleus/jasper-client/blob/master/tests/bootstrap.php#L55-L59
$autoloader
= dirname(
__FILE__
) .
'/vendor/autoload.php';if
(
is_readable(
$autoloader
) ) { require_once
$autoloader;}
use
Automattic\WooCommerce\Client;
$woocommerce
=
new
Client( '
https://shop.local
', 'the_consumer_key', 'the_consumer_secret', [ 'wp_api'
=> true, 'version'
=>
'wc/v2', ]);
Lưu ý: để giao tiếp với WooCommerce API, chúng ta cần các tham số truyền vào Client gồm: địa chỉ URL woocommerce, consumer key, consumer secret, các tùy chọn khác như phiên bản API..
Thông số này bạn cần tạo trong trang quản trị WooCommerce, tại giao diện quản trị WP truy cập WooCommerce › Settings › API › Keys/Apps.
Tạo sản phẩm sử dụng REST API
Bây giờ, mình sẽ thêm sản phẩm mới trong WooCommerce, bằng đoạn mã sau:
12345678910111213141516171819
$prod_data
= [ 'name'
=>
'A great product', 'type'
=>
'simple', 'regular_price'
=>
'15.00', 'description'
=>
'A very meaningful product description', 'images'
=> [ [ 'src'
=>
'
https://shop.local/path/to/image.jpg
', 'position'
=> 0, ], ], 'categories'
=> [ [ 'id'
=> 1, ], ],];
$woocommerce->post(
'products',
$prod_data
);
Để biết thêm chi tiết các tham số, truy cập tại đây.
Thêm nhiều sản phẩm cùng lúc
Với API trên, chỉ cho phép bạn thêm từng sản phẩm. Để thêm nhiều sản phẩm cùng một request chúng ta cần sử dụng thư viện Requests (Thật tuyệt vì các request được chạy song song). Cùng với đó, thời gian chạy có thể giảm.
Với hàm requests_multiple()
nó có thể chạy nhiều request cùng một lúc & đây là những gì chúng ta muốn.
Ví dụ, nếu chạy 2 GET requests , tham khảo ví dụ dưới đây:
123456789101112
$requests_array
= [ [ 'url'
=>
'
https://example.com/api-endpoint-1
', 'type'
=>
'GET', ], [ 'url'
=>
'
https://example.com/api-endpoint-2
', 'type'
=>
'GET', ],];
$responses
= Requests::request_multiple(
$requests_array
);
Kết quả biến $responses
sẽ chứa thông tin của 2 request trên.
Sử dụng thư viện Requests với WooCommerce, ví dụ một sản phẩm có nhiều thông tin như danh mục , thẻ, các thuộc tính. Ví dụ dưới đây sẽ trả về danh mục & thuộc tính của sản phẩm:
12345678910111213141516171819202122232425262728293031
/** * Returns URL for accessing the provided WooCommerce REST API endpoint. * * @param string $endpoint API endpoint. * @param array $parameters Optional parameters. * * @return string */function
build_api_url(
$endpoint,
$parameters
= [] ) { // Add trailing slash to URL. $url
= trailingslashit(
'
https://example.com/wp-json/wc/v2/
'
) .
$endpoint; $api_url
= add_query_arg( \array_merge(
$parameters, [ 'consumer_key'
=>
'ck_000', 'consumer_secret'
=>
'cs_000', ] ),
$url
);
return
$api_url;}// Make requests to get existing categories and attributes.$requests
= [ [ 'url'
=> build_api_url(
'products/categories'
), 'type'
=>
'GET', ], [ 'url'
=> build_api_url(
'products/attributes'
), 'type'
=>
'GET', ]];
$responses
= Requests::request_multiple(
$requests
);
Để thêm nhiều sản phẩm, bạn thực hiện phương thức POST và thêm dữ liệu sản phẩm vào mảng trông như thế này:
12345
$tmp_requests_array[] = [ 'url'
=> build_api_url(
"products"
), 'type'
=>
'POST', 'data'
=>
$prod_data,];
Lưu ý: chúng ta không nên gửi quá nhiều yêu cầu vào cùng một thời gian, có thể làm nghẽn server.
Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook
0SHARES
Bài Viết Liên Quan:
Last updated