【问题标题】:Woocommerce Subscription API: How to filter by date_modifiedWoocommerce 订阅 API:如何按 date_modified 过滤
【发布时间】:2021-02-05 11:38:13
【问题描述】:

在我的 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”或订阅响应对象中的任何其他字段进行过滤。

【问题讨论】:

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


    【解决方案1】:

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

    /**
     * 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 );
    

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

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

    'date_query' => [
        'column' => 'post_modified',
        'after'  => [
            'year'  => 2021,
            'month' => 2,
            'day'   => 15,
        ],
    ],
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 2017-07-20
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      • 2019-01-03
      相关资源
      最近更新 更多