php - Calling WooCommerce REST API in WordPress Plugin

I am getting familiar with a WordPress website that uses WooCommerce.

My objective is to call the WooCommerce REST API and show the products on an HTML page within same WordPress website.

Steps I have taken:

  1. Created a folder in wp-content/plugins/ and a file within it with PHP extension.
  2. Following is the code snippet:
<?php
   /*
   Plugin Name: XXXX
   Plugin URI: XXXX
   description: XXXX
   Version: X.XX
   Author: XXX
   Author URI: XX@XXX
   License: GPL2
   */
?>
<?php
//WooCommerce credentials:
$username = 'consumer key';
$password = 'consumer secret';

$response = wp_remote_get( 'https://mywebsite/wp-json/wc/v3/products', array(
      'Accept' => 'application/json',
      'timeout'     => '120',
      'Authorization' => 'Basic ' . base64_encode( "{$username}:{$password}" ),
));

if( is_wp_error( $response ) ) {
   $error_string = $response->get_error_message();
    echo '<div id="message" class="error"><h1>' . $error_string . '</h1></div>';
    return false;
}

$code = wp_remote_retrieve_response_code( $response );
echo $code;

$body = wp_remote_retrieve_body( $response );
//  echo $body;
$data = json_decode( $body );
// echo $data;
if( ! empty( $data ) ) {

    echo '<ul>';
    foreach( $data->products as $product ) {
        echo '<li>';
            echo '<a href="' . esc_url( $product->info->link ) . '">' . $product->info->title . '</a>';
        echo '</li>';
    }
    echo '</ul>';
}

I get a response code 200 on line 30 above. However, there is an error 401 which I can see in the logs:

{"code":"woocommerce_rest_cannot_view","message":"Sorry, you cannot list resources.","data":{"status":401}}

I am able to use Postman and get the result by passing in the key and password and using basic authentication on Https. However it looks like authentication is failing. Appreciate any help.

Thanks in advance.

Answer

Solution:

You can try using woocommerce composer package. Check below tutorial if helps.

https://www.cloudways.com/blog/custom-dashboard-using-woocommerce-php-rest-api/

Source