如何创建带有多个参数的WordPress自定义端点?

时间:2021-09-03 作者:user2584538

我想获得给定日期范围内的所有WooCommerce订单。我可以一次检索所有订单。但我对通过API URL传递日期范围感到困惑。

有人能帮我吗?我知道是这样的,但我想不出确切的方法。

以下是我的路线:

add_action(\'rest_api_init\', function() {
    register_rest_route(\'woo/v2\', \'woocommerce/order_summary_by_date/(?P<start_date>/<end_date>)\', array(
        \'methods\' => \'GET\',
        \'callback\' => \'woocommerce_orders_by_dates\'
    ));
});
这是访问的功能:

function woocommerce_orders_by_dates($start_date, $end_date) {
    $start_date = $start_date[\'start_date\'];
    $end_date = $end_date[\'start_date\'];

    return $start_date . $end_date;
}
URL为:https://example.com/wp-json/woo/v2/woocommerce/order_summary_by_date/?start_date=2021-09-01&end_date=2021-09-30

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

注册路由时,通过查询字符串接受的参数(例如。?a=b&c=d) 没有像您所做的那样注册为端点的一部分。这些参数只需要在args 属性:

add_action(
    \'rest_api_init\',
    function() {
        register_rest_route(
            \'woo/v2\',
            \'woocommerce/order_summary_by_date\',
            array(
                \'methods\'  => \'GET\',
                \'callback\' => \'woocommerce_orders_by_dates\'
                \'args\'     => array(
                    \'start_date\' => array(
                        \'required\' => true,
                    ),
                    \'end_date\'   => array(
                        \'required\' => true,
                    ),
                ),
            )
        );
    }
);
您还可以为参数定义清理和验证回调。这些都在the documentation.

要访问值,请使用$request 传递给回调的对象:

function woocommerce_orders_by_dates( $request ) {
    $start_date = $request->get_param( \'start_date\' );
    $end_date   = $request->get_param( \'end_date\' );
}

相关推荐

如何清理wp-content/plugins/wordpress-seo中不必要的文件?

我目前维护Wordpress网站7年。磁盘使用率最近已满,因此我需要定期检查自动备份并保存这些备份,然后将其从服务器中删除。当我检查时,插件文件夹中的wordpress seo文件夹(这是Yoast seo默认插件文件夹)占用了太多空间。据我所知,它充满了各种版本的插件文件。确切地说,它位于wordpress seo插件的js/dist文件夹中。它包含几种类型的小型javascript,每个名称的末尾都有某种序列或版本号,总容量约为250-300 MB。我可以清理这些文件吗?如果是,是否安全?如果我从以前