[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 TwitterFacebook

Bài Viết Liên Quan:

Last updated