Woocommerce 订阅 API:如何按日期修改

时间:2021-02-05 11:38:13

标签: php woocommerce-rest-api woocommerce-subscriptions

在我的 PHP Symfony 应用程序中,我试图检索按修改日期过滤的 Woocommerce 订阅,但没有关于如何将“过滤器”参数与 API 一起使用的文档。 (https://prospress.github.io/subscriptions-rest-api-docs/#list-all-subscriptions)。现在我只能使用“之后”和“之前”进行日期过滤,这似乎使用订阅创建日期。

use Automattic\WooCommerce\Client;
use Automattic\WooCommerce\Admin\Notes\WooCommerceSubscriptions;

$wc_subscription = new Client($this->getParameter('woocommerce_url'), $this->getParameter('woocommerce_key'), $this->getParameter('woocommerce_secret'), ['version' => 'wc/v1',]);

$subs = $wc_subscription->get('subscriptions', ['page' => 1, 'per_page' => 100, 'filter' => ['date_modified' => '2021-02-01']]);

这会返回极高的记录数,这是不正确的,因为只有少数订阅已更新。

如何通过“date_modified”或订阅响应对象中的任何其他字段进行过滤。

1 个答案:

答案 0 :(得分:0)

来自 WC 休息站控制器的这可能会有所帮助:

bot.snipes

您似乎可以在 WP_Query 之前使用“woocommerce_rest_shop_subscription_query”来调整参数。而且,由于您将请求作为参数获取,因此您可以根据所需的精确值进行调整。

请记住,WP_Query 日期查询需要在其中包含列值才能使用修改日期而不是发布日期。

/**
 * Filter the query arguments for a request.
 *
 * Enables adding extra arguments or setting defaults for a post
 * collection request.
 *
 * @param array           $args    Key value array of query var to query value.
 * @param WP_REST_Request $request The request used.
 */
 $args = apply_filters( "woocommerce_rest_{$this->post_type}_query", $args, $request );
 $query_args = $this->prepare_items_query( $args, $request );