事实是,WooCommerce API并不特殊繁芜,但是就像任何新技能或产品功能一样,须要一点韶光来适应。学习这类东西的最佳办法是找到一个大略易懂的教程,逐步勾引你完成一个过程,纵然它不是最真实的例子。不要过于繁芜,只需一个快速的观点验证脚本,看看你是否能够让它事情。这样的东西可以让你渲染一个页面,就像这样:
几分钟的搜索后,你可能已经意识到关于WooCommerce API有大量的好信息,比如WooCommerce API是什么;支持的端点列表;如何天生API密钥;以及如何在Postman或Insomnia等工具中测试API。
你找不到 的是阐明如何迈出下一步的文章:从API测试工具中的事情GET要求到一个功能性(纵然是基本的)脚本,从你的WooCommerce安装中提取信息并将其显示在不是你的WordPress网站上 - 无论是一个独立的Web做事器还是一个移动运用程序或其他什么地方。

这篇文章将向你展示:利用WooCommerce API实现你的第一个“Hello Woo”步骤的逐步指南。
我本日构建的示例脚本故意大略和简约,由于我不肯望细节在花哨的代码中丢失。我构建的示例:
利用PHP构建(但该当很随意马虎将其转换为Node、Python或其他措辞)。从现有的WooCommerce网站中提取产品列表。在一个大略的HTML表格中显示图像、名称、描述和价格。在开始编码之前为了让这篇文章简短易读,我假设你已经完成了一些步骤。但是在本博客的前面和下面的项目符号中都有链接,可以见告你如何完成这些任务。
你有一个安装了WordPress和WooCommerce的事情环境。你至少有一两个产品在WooCommerce商店中发布。你已经创建了一个只读API密钥,并且你有消费者密钥和消费者密钥准备就绪。你已经成功从URL“http://YOUR_SERVER/wp-json/wc/v3/products”中得到了一个相应,利用Postman或Insomnia等工具。“YOUR_SERVER”显然是你实际的WordPress安装的URL。你有一个运行PHP代码的Web做事器。一旦这些都就位了,我们就可以开始编码了!
毫无疑问,当新开拓者考试测验利用WooCommerce API时,让他们碰着困难的是认证的事情。
这与WooCommerce无关,而与OAuth有关,它只是…奇怪。很难明得。令人沮丧地缺少文档 - 尤其是对付新开拓者来说。现在,我将阐明一些关于OAuth与WooCommerce干系的内容,以帮助你战胜这个障碍。
大略的WooCommerce API操作利用OAuth 1.0版本。不是 基本认证,就像网上的一些信息可能会说的那样。OAuth 2.0与OAuth 1.0不兼容。因此,如果你的系统支持2.0,你可能须要添加一些库来使这个脚本事情。对付PHP来说,有一些不同的OAuth客户端。在这个例子中,我利用了(有点)原生的PHP oauth模块。我利用它是由于它大略,而不是由于它是最好的。对付一个真实的实现,你险些肯定会想利用一些更新和更健壮的东西。无论你利用哪个客户端,你都须要确保你能天生以下元素:一个韶光戳一个“nonce” - 一个随机数。一个OAuth署名如果你对这些项目不是100%确定,没紧要,由于你将不才面的示例中看到它们的位置。但我希望在我们深入代码之前你能理解这些必需的元素。
但是,只管说了这么多…
让我们开始编码!我将分阶段构建我们的脚本,这样你就可以理解它们在彼此之上的关键元素。
阶段一:认证、获取数据、退出。<?php # 设置一些初始变量$url = 'http://localhost:8888/wp-json/wc/v3/products';$consumerKey = '1234567890';$consumerSecret = '09876564321';$nonce = mt_rand();$timestamp = time();# 设置OAuth$oauth = new OAuth($consumerKey,$consumerSecret);$oauth->setTimestamp($timestamp);$oauth->setNonce($nonce);$sig = $oauth->generateSignature('GET',$url);# 创建CURL命令$curl = curl_init();curl_setopt_array($curl, array( CURLOPT_URL => $url.'?oauth_consumer_key='.$consumerKey.'&oauth_signature_method=HMAC-SHA1&oauth_timestamp='.$timestamp.'&oauth_nonce='.$nonce.'&oauth_version=1.0&oauth_signature='.$sig, CURLOPT_RETURNTRANSFER => true,));# 实行CURL命令并返回数据$response = curl_exec($curl);curl_close($curl);echo $response;?>
在这个阶段,大部分事情是OAuth连接。须要把稳的几点是:
我将URL、消费者密钥等拆分成单独的大略变量。你在上面看到的消费者密钥和消费者密钥是(显然)假的。请利用你真实的密钥。同样显而易见的是,你不应该将你的密钥硬编码到你的代码中。我在这里这样做只是为了清晰起见。有更优雅的方法来将所有这些变量组合到CURLOPT_URL中。再次强调,我以这种办法呈现它们是为了让代码易于理解,而不是由于这是最好的做法。如果统统顺利,你可以从命令走运行这个脚本,得到的输出看起来像这样:
它不足都雅,但你可以看到我们从WooCommerce网站中提取了数据,包括名称、描述、URL等一系列信息。这已经足够让我们进入下一步了。
阶段二:提取我们须要的数据。<?php # 设置一些初始变量### 代码在这里缺失落 #### 实行CURL命令并返回数据$curl_response = curl_exec($curl);curl_close($curl);$response_array = json_decode($curl_response,true);foreach($response_array as $product) { $name = $product['name']; $permalink = $product['permalink']; $short_desc = $product['short_description']; $price = $product['price']; foreach($product['images'] as $image) { $image = $image['src']; break; }echo $name.', '.$permalink.', '.$short_desc.', '.$price.', '.$image."\n";}?>
这个版本的关键之处在于,我们利用了foreach循环来遍历每个产品,并提取我们想要的数据元素:名称、描述和价格;以及图像链接和指向WooCommercce做事器本身的链接。
我想指出的一些细节是:
从# 设置一些初始变量到# 实行CURL命令并返回数据的部分与前一个阶段相同,以是我没有包含它。每个脚本的完全版本都可以在本文末端的下载中找到。我们的API调用的原始输出是字符串格式,以是我利用json_decode()将其转换为PHP可以处理的数组。一个产品可能有多个图像。我的代码获取第一个图像并退出。如果你的产品没有图像,代码很可能会出错。和之前一样,你可以直接从命令走运行这个脚本,输出看起来像这样:
你可以看到我们更清晰地理解了我们提取的数据。唯一须要把稳的是描述中的HTML格式仍旧存在。
到了这一步,我们的脚本已经准备好进入它的第三个和终极形式。
阶段三:准备投入生产!<?php # 设置一些初始变量### 代码(仍旧)在这里缺失落 #### 实行CURL命令并返回数据$curl_response = curl_exec($curl);curl_close($curl);$response_array = json_decode($curl_response,true);$productlist = '<tr><td>Image</td><td>Name</td><td>Description</td><td>Price</td></tr>'."\n";foreach($response_array as $product) { $name = $product['name']; $permalink = $product['permalink']; $short_desc = $product['short_description']; $price = $product['price']; foreach($product['images'] as $image) { $image = $image['src']; break; } $productlist = $productlist.'<tr><td><IMG SRC="'.$image.'" width="100"></td><td><A HREF="'.$permalink.'"">'.$name.'</a></td><td>'.$short_desc.'</td><td>'.$price.'</td></tr>'."\n"; }?><!DOCTYPE html><html> <head> <title>My Simple Product Page</title> </head> <body> <table border=1> <?php echo $productlist; ?> </table> </body></html>
在这个版本的代码中,我们只是添加了一些元素,使它可以显示为一个网页。这些包括:
$productlist变量,将数据包装成HTML表格构造。显示产品图像,而不是列出URL。将名称与产品URL结合在一起,使名称可点击。结果,正如我们之前看到的,该当是这样的:
##
总结从所有这些中得出的关键要点是,设置和利用WooCommerce API并不特殊困难。通过看到一个大略的例子,你很可能已经有了如何扩展和增强你在这里学到的东西的想法。最好的部分是,现在你有了将这些想法变成现实的知识!