我应该在服务器上使用什么 WooCommerce API?

2023-12-12

我正在编写一个脚本来批量更改产品属性,例如价格、重量和尺寸。我需要直接在安装了 WordPress (4.7.2) 和 WooCommerce (2.6.13) 的服务器上运行脚本。我能想到的选项对我来说似乎并不理想:

  1. WooCommerce 非 REST API将是我显而易见的选择,但它被降级为一个可怕的选择旧文件夹闻起来有种被弃用的味道。
  2. WooCommerce REST API (link) 似乎有点过分了:当我已经在服务器上并且只能使用 PHP 时,为什么还要进行身份验证并使用 HTTP?
  3. 作用于数据库鉴于 WooCommerce 产品属性之间存在许多关系,通过 update_post_meta() 似乎容易出错且难以维护;只是看看here为了改变产品的价格,人们必须重复大量的逻辑!
  4. WP-CLI可以工作,但据我所知它不会像 PHP 脚本那么灵活;任何状况之下,它是 REST 驱动的从 v3.0 开始,所以我想第 2 点也适用于此。

我觉得我错过了一些东西,请帮助我,否则我的大脑会爆炸:-D


事实证明,您可以在服务器上使用 REST API,而无需进行身份验证或执行 HTTP 请求:您只需要构建一个WP_REST_Request对象并将其直接传递给 API。

示例:展示产品

下面是一个示例 PHP 脚本,它将使用 REST API 根据产品 ID 打印产品信息。该脚本应放置在 WordPress 文件夹中并在浏览器中执行;产品 ID 作为查询参数给出,例如:http://www.yourwebsite.com/script.php?id=123.

<?php
/* Load WordPress */
require('wp-load.php');

/* Extract the product ID from the query string */
$product_id = isset( $_GET['id'] ) ? $_GET['id'] : false;

if ( $product_id ) {

    /* Create an API controller */
    $api = new WC_REST_Products_Controller();

    /* Build the request to create a new product */
    $request = new WP_REST_Request ('POST', '', '');
    $request['id'] = $product_id;

    /* Execute the request */
    $response = $api->get_item( $request );

    /* Print to screen the response from the API.
    The product information is in $response->data  */
    print_r( $response );

    /* Also print to screen the product object as seen by WooCommerce */
    print_r( wc_get_product( $product_id ) );

}

示例:创建产品

下一个脚本将创建一个新产品。产品的详细信息应直接输入到脚本中set_body_params()功能。对于允许字段的列表,只需使用前面的脚本打印任何产品的数据即可。

/* Load WordPress */
require('wp-load.php');

/* Create an API controller */
$api = new WC_REST_Products_Controller();

/* Build the request to create a new product */
$request = new WP_REST_Request ('POST', '', '');
$request->set_body_params( array (
    'name' => 'New Product',
    'slug' => 'new-product',
    'type' => 'simple',
    'status' => 'publish',
    'regular_price' => 60,
    'sale_price' => 40,
));

/* Execute the request */
$response = $api->create_item( $request );

/* Print to screen the response from the API */
print_r( $response );

/* Also print to screen the product object as seen by WooCommerce */
print_r( wc_get_product( $response->data['id'] ) );

一些基本的安全措施

在网站上保留可执行 PHP 脚本并不是一个好主意。我宁愿将它们合并到一个插件中,并使其仅可供授权用户访问。为了实现这一点,将以下代码添加到脚本中可能会很有用:

/* Load WordPress. Replace the /cms part in the path if
WordPress is installed in a folder of its own. */
try {
    require($_SERVER['DOCUMENT_ROOT'] . '/cms/wp-load.php');
} catch (Exception $e) {
    require($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php');
}

/* Restrict usage of this script to admins */
if ( ! current_user_can('administrator') ) {
  die;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该在服务器上使用什么 WooCommerce API? 的相关文章

  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • 简单的 PHP 回显代码不起作用

    这是我的 html 和 php 脚本 h1 Bob s Auto Parts h1 table width 100 tr tr table 为什么这个输出会出现一个 gt 我希望它是 这有效 仅有的 这是输出 鲍勃的汽车零件 鲍勃
  • 如何让Apache服务index.php而不是index.html?

    如果我将以下行放入index html文件 使 Apache 包含index php file 参观index html页面向我显示了这个 这是为什么 为什么它实际上不包含 PHP 文件 正如其他人指出的那样 您很可能没有 html设置为处
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 如何关闭未关闭的 HTML 标签?

    每当我们从数据库或类似来源获取一些经过编辑的用户输入内容时 我们可能会检索仅包含开始标记但不包含结束标记的部分 这可能会妨碍网站当前的布局 有客户端或服务器端的方法来解决这个问题吗 找到了一个很好的答案 使用 PHP 5 并使用 DOMDo
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 从类似 cronjob 的语法创建“下次运行时间”日期

    在我正在创建的应用程序中 用户可以安排重复任务 生成间隔模式的简单值是 Minute 0 59 90 each minute Hour 0 23 90 each hour Day of month 1 31 90 each day of m
  • 未传递“client_reference_id”参数

    我使用 Stripe Checkout Stripe 版本 2016 07 06 我想通过参数 client reference id 恢复个性化数据 但在 JSON 中 当我有金额或电子邮件时 我找不到它 我是在测试环境中 你能帮我吗 先
  • 使用 Instagram Basic Display API 时出现“无效平台应用程序”错误

    我正在尝试使用 Instagram Basic 显示 API 但是当我发布授权代码以获取访问令牌时 我不断收到以下错误 error type OAuthException 代码 400 error message 平台应用无效 我正在遵循此
  • 在 WooCommerce 中添加到购物车之前清空购物车

    我正在使用 WP 作业管理器和 Woo Subscriptions Now 最初 我选择了一个套餐 Woo Subscription 然后我添加了所有细节 但没有提交 回到网站 所以要再次购买 我需要选择一个套餐 于是我选择了套餐并填写了详
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • Mysqli 更新抛出 Call to a member function bind_param() 错误[重复]

    这个问题在这里已经有答案了 我有一个 70 80 字段表单 需要插入到表中 因此我首先根据表单中的输入名称在数据库中创建了一个表 而不是手动创建一个巨大的插入语句 这是我使用的代码创建 更改表 function createTable ar
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量
  • 如何清除 APC 缓存而不使 Apache 崩溃?

    如果 APC 存储大量条目 清除它们会导致 httpd 崩溃 如果 apc clear cache user 花费的时间超过 phps max execution time 调用 apc clear cache 的脚本 将在之前被 php
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之

随机推荐

  • 使用 PHP 抓取完整图像 src

    我正在尝试用 php 抓取 img src 我可以很好地获取 src 但是如果 src 不包含完整路径 那么我无法真正重用它 有没有办法使用php获取图像的完整路径 如果使用右键菜单 浏览器可以获取它 IE 如何获取包含以下两个示例之一中的
  • Django 开发服务器不断注销

    我在 settings py 中将 SESSION COOKIE AGE 设置为 360 但是在我开发服务器时它总是将我注销 为什么会发生这种情况以及如何防止这种情况 Thanks 这是我的设置 py 设置 py Django settin
  • 适用于 iPhone 的 MQTT 客户端

    我正在尝试遵循这个blog用于为 iPhone 构建推送服务 该博客使用 Android 作为工作平台 但它也可以迁移到 iPhone 前提是我在 Objective C 中获得了 MQTT 客户端 但我在任何地方都找不到 我最接近的是 我
  • 使用 CsvHelper 从单个 csv 文件读取多个类

    我最近一直在使用 Josh Close 的 CsvHelper 来解析 CSV 文件 我非常喜欢用于类映射的流利 api 我正在尝试映射包含多种记录类型的 csv 文件 文件结构是 C Comment Timestamp I Class1
  • 在 Linux 中使用 C、C++ 发出系统命令

    我知道在 DOS Windows 应用程序中 您可以使用以下行从代码发出系统命令 system pause or system myProgram exe 来自 stdlib h 是否有类似的 Linux 命令 如果有 我会在哪个头文件中找
  • Django 模型类和自定义属性

    今天我遇到了一个奇怪的问题 我在 Django 中有一个模型类 并向其中添加了一个自定义属性 该属性不应保存到数据库中 因此在模型结构中不具有代表性 class Category models Model groups models Man
  • 如何在 Bootstrap 中将导航栏内容居中

    我正在学习 Bootstrap 4 导航栏 但我无法清楚地理解如何在导航栏中定位对象我希望将搜索框放置在导航栏的中心并在右侧放置一个按钮 但我只能做到这一点导航栏没有得到居中对齐 div class collapse navbar coll
  • QTabBar奇怪的线条不消失

    I have created this interface 我的问题是 如何使用我的样式表摆脱那条过时的行 黑框 objectname mainTabBarWidget QWidget 垂直布局 它有固定的高度 38px 并从左到右包含这些
  • Order by Clause 与访问中的 unique 冲突?

    请帮助我解决这个问题 因为我无法解决这个问题 当尝试执行此语句时 SELECT distinct grade FROM tblStudents ORDER BY Val grade grade 访问告诉我ORDER BY clause Va
  • javaFX 进度条更新崩溃

    我的应用程序中出现了 JavaFX jdk 1 8 0 91 上的一个非常严重的错误 其中显示并更新了几个进度条 随机或同时 有时 特别是当进度条被填满时 它有一个进度条的样式类 但有时也在什么都没有的情况下 软件块和我有这个跟踪出现几次
  • 实现解析器函子

    为 Brent Yorgey 的 2013 年 UPenn 工作class家庭作业 如下newtype exists newtype Parser a Parser runParser String gt Maybe a String 我正
  • Steam API 身份验证

    在开始之前 我要声明我对 OpenID 一无所知 我什至不想做 OpenID 的用途 但我想人们会提到它 但这不是我想要的 我有软件 该软件要求用户在注册时提供其 Steam 用户名 他们不通过 Steam 登录 只是提供他们的用户名 以便
  • C++ - 2 个类 1 个文件

    假设我想要这样的东西 在一个 cpp源文件 class A public void doSomething B b class B public void doSomething A a 无论如何 是否可以在不将其分成两个单独的文件的情况下
  • 使用 Flexslider 进行哈希 URL 导航

    我正在构建一个使用 flexslider 的网站 但我想实现一些 URL 哈希导航 根据 URL 的哈希值 我计划获取要显示的幻灯片的索引 最接近的方法是查看手动导航的代码 其中单击的元素的索引等于滑动 slider controlNav
  • Chrome 扩展程序将外部 javascript 添加到当前页面的 html

    我通过 chrome 扩展将一些外部 JavaScript 添加到页面末尾 然后 外部 JavaScript 尝试将一些数据发送回服务器 但这并没有发生 JavaScript 想要获取当前页面的 url 和引荐来源网址并将其发布回服务器 谁
  • 秒表基准测试可以接受吗?

    是否有人使用过秒表基准测试 或者应该始终使用性能工具 有没有什么好的免费 Java 工具 你使用什么工具 为了澄清我的担忧 由于操作系统调度 秒表基准测试可能会出现错误 在程序的给定运行中 操作系统可能会在您正在计时的函数中间安排另一个 或
  • 使用COM端口读取/写入数据的批处理脚本

    我需要编写一个可以读取和写入 COM 端口 在我的例子中为 COM1 的批处理脚本 我知道我可以使用以下命令将数据发送到 COM 端口 echo hello gt COM1 我可以使用读取进入文本文件的数据 type COM1 gt sam
  • Webpack 中的“publicPath”有什么作用?

    Webpack 文档声明output publicPath is The output path从 JavaScript 的角度来看 您能详细说明一下这实际上意味着什么吗 I use output path and output filen
  • NSURLErrorDomain错误-1021

    我正在开发一个应用程序 我集成了保管箱 登录正确完成 我也可以在 dropBox 中创建文件夹 但是当我尝试加载文件时出现错误 我收到以下错误 error making request to 1 files put dropbox Info
  • 我应该在服务器上使用什么 WooCommerce API?

    我正在编写一个脚本来批量更改产品属性 例如价格 重量和尺寸 我需要直接在安装了 WordPress 4 7 2 和 WooCommerce 2 6 13 的服务器上运行脚本 我能想到的选项对我来说似乎并不理想 WooCommerce 非 R