- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
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.
composer require automattic/woocommerce
Thêm mã khởi tạo để kết nối vào WooCommerce.
// 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:
$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:
$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:
/** * 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:
$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.
Để nhận được bài viết mới vui lòng đăng ký kênh kiến thức WordPress từ A-Z ở Form bên dưới. Bạn cũng có thể nhận được sự trợ giúp trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Đức Thắng says
AD ơi. Những code này tạo vào 1 file mới hay code thêm vào file nào vậy ạ?
Hoàng Quách says
cách hỏi của bạn thì m thấy cái này nâng cao với bạn rồi 🙂 inbox nếu muốn thuê mình làm nhé!
Luân says
Mình muốn thuê bạn kết nối API , cho xin sdt trao đổi nhé
Hoàng Quách says
bạn add zalo 0987342124