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:
- Created a folder in wp-content/plugins/ and a file within it with PHP extension.
- 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