网站首页 > 开源技术 正文
许多人都知道WooCommerce API,但却没有开始使用它。还有一些人刚刚了解它。还有一些人可能曾尝试使用它,但在某个地方卡住了,又回到了传统的做事方式。
事实是,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服务器。
一旦这些都就位了,我们就可以开始编码了!
对于困惑的Oauth
毫无疑问,当新开发者尝试使用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并不特别困难。通过看到一个简单的例子,你很可能已经有了如何扩展和增强你在这里学到的东西的想法。最好的部分是,现在你有了将这些想法变成现实的知识!
猜你喜欢
- 2024-09-10 如何在跨境独立站WooCommerce中添加产品,管理产品
- 2024-09-10 WooCommerce向比特币SV敞开大门(比特币mvrv)
- 2024-09-10 跨境电商运营 | 高性价比!WooCommerce聊天机器人推荐
- 2024-09-10 Woocommerce独立站商店订单列表添加自定义列
- 2024-09-10 Woocommerce添加自定义产品起批量
- 2024-09-10 WordPress Woocommerce购物网站安装支付插件的教程
- 2024-09-10 Wordpress建站教程:不用WooCommerce怎么做B2B网站添加产品?
- 2024-09-10 WordPress插件YITH WooCommerce礼品卡被爆“关键”漏洞
- 2024-09-10 Wordpress+Woocommerce在线商店-多国货币切换设置教程
- 2024-09-10 WooCommerce 3.7正式测试上线,体积更小更稳定
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)