添加具有多个参数的WordPress API终结点

时间:2018-03-13 作者:Aaron Blakeley

所以我在很大程度上理解了wp rest控制器的工作原理,它在做什么,以及为什么它是最好的方式。我遇到的问题是,我的头脑围绕着函数register\\u rest\\u route的端点URL中的正则表达式。

正则表达式就是它们,但我想知道是否有人可以在本文中为我分解它。

一些示例代码

register_rest_route( $this->namespace, \'/\' . $this->resource_name . \'/(?P<id>[\\d]+)\', array(
        // Notice how we are registering multiple endpoints the \'schema\' equates to an OPTIONS request.
        array(
            \'methods\'   => \'GET\',
            \'callback\'  => array( $this, \'get_item\' ),
            \'permission_callback\' => array( $this, \'get_item_permissions_check\' ),
        ),
        // Register our schema callback.
        \'schema\' => array( $this, \'get_item_schema\' ),
    ) );
所以(?P<id>[\\d]+) 让我有点困惑,我理解这意味着id的参数是必需的,但如果我想要多个参数,如果我想要一个类似于供应商/v1/地理定位/{param}/{param}的路由,该怎么办or /供应商/v1/?id={param}&;地址={param}

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

我也有同样的问题,我在谷歌上搜索,终于在上面答案的帮助下找到了解决方案。这可能会帮助他人。

$this->base = home
register_rest_route( 

        $namespace, \'/\' . $this->base . \'/\' .  \'products\' . \'/\', array(
            array( 
                \'methods\'   => WP_REST_Server::READABLE, 
                \'callback\'  => array( $this, \'rest_api_popular_products\'), 
            ),
        )  
    );        
    register_rest_route(
        $namespace, \'/\' . $this->base . \'/\' .  \'products\' . \'/(?P<category>[\\d]+)/(?P<sort>[\\w]+)\', array(
            \'args\'   => array(
                \'id\' => array(
                    \'description\' => __( \'Unique identifier for the resource.\', \'woocommerce\' ),
                    \'type\'        => \'integer\',
                ),
            ),
            array(
                \'methods\'             => WP_REST_Server::READABLE,
                \'callback\' => array( $this, \'rest_api_popular_products\' ),                  
                \'args\'                => array(
                    \'context\' => $this->get_context_param( array( \'default\' => \'view\' ) ),
                ),
            )
        )
    );
API请求,如:。。wp json/wc/v2/主页/产品/?类别=89(&;排序=受欢迎程度

结束