Back

Step by Step Guide to Building a WooCommerce API Integration in PHP

Aug 11, 2024 • 5 minute read

Hey there, fellow developer! Ready to dive into the world of WooCommerce API integration? You're in the right place. We'll be using the woocommerce/woocommerce-rest-api package to make our lives easier. Let's get started!

Prerequisites

Before we jump in, make sure you've got:

  • A PHP environment (you're a PHP dev, so I'm sure you've got this covered)
  • Composer installed (because who wants to manage dependencies manually?)
  • A WooCommerce store with API access (if you don't have one, go set it up – I'll wait)

Installation

First things first, let's get that package installed:

composer require automattic/woocommerce

Easy peasy, right? Composer does all the heavy lifting for us.

Authentication

Now, let's get you authenticated:

  1. Head over to your WooCommerce store's admin panel
  2. Navigate to WooCommerce > Settings > Advanced > REST API
  3. Click "Add key" and generate those API keys

Got your keys? Great! Let's configure the API client:

<?php require __DIR__ . '/vendor/autoload.php'; use Automattic\WooCommerce\Client; $woocommerce = new Client( 'http://example.com', 'ck_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', 'cs_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', [ 'wp_api' => true, 'version' => 'wc/v3' ] );

Basic API Usage

Now that we're all set up, let's make our first API call:

$products = $woocommerce->get('products'); print_r($products);

Boom! You've just retrieved all your products. How cool is that?

CRUD Operations

Let's create, update, and delete some stuff:

// Create a product $data = [ 'name' => 'Awesome T-Shirt', 'type' => 'simple', 'regular_price' => '19.99', 'description' => 'This is one awesome t-shirt!', ]; $woocommerce->post('products', $data); // Update a product $data = [ 'regular_price' => '24.99' ]; $woocommerce->put('products/123', $data); // Delete a product $woocommerce->delete('products/123', ['force' => true]);

Working with Specific Endpoints

The WooCommerce API has endpoints for pretty much everything. Here are a few examples:

// Get all orders $orders = $woocommerce->get('orders'); // Get a specific customer $customer = $woocommerce->get('customers/5'); // Update a coupon $woocommerce->put('coupons/10', ['amount' => '5.00']);

Error Handling

Always expect the unexpected:

try { $result = $woocommerce->get('products/999999'); } catch (HttpClientException $e) { echo 'Oops! ' . $e->getMessage(); }

Best Practices

  1. Mind the rate limits: WooCommerce has rate limits. Be a good API citizen and don't hammer the server.
  2. Cache when possible: If you're making frequent requests for data that doesn't change often, consider caching the results.

Advanced Topics

Want to level up? Look into:

  • Setting up webhooks for real-time updates
  • Using batch operations for bulk updates

Conclusion

And there you have it! You're now equipped to integrate WooCommerce into your PHP applications like a pro. Remember, the official WooCommerce REST API documentation is your best friend for more detailed information.

Now go forth and build something awesome! 🚀