web-dev-qa-db-fra.com

Ajout de Wordpress point de terminaison API avec plusieurs paramètres

Je comprends donc pour la plupart comment fonctionne le contrôleur wp rest, ce qu'il fait et pourquoi c'est la meilleure façon de le faire. Le problème que j'ai est d'envelopper ma tête autour des expressions régulières dans l'URL du point de terminaison pour la fonction register_rest_route.

Les expressions régulières sont ce qu'elles sont mais je me demandais si quelqu'un pouvait me les décomposer dans ce contexte.

Un exemple de code

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' ),
    ) );

Alors le (?P<id>[\d]+) me déroute un peu Je comprends que cela signifie que le paramètre id est requis mais que faire si je voulais plusieurs paramètres et si je voulais avoir une route qui ressemblait à /vendor/v1/géolocaliser/{param}/{param} o/vender/v1 /? id = {param} & address = {param }

2
Aaron Blakeley

J'ai le même problème, je recherche enfin sur google à l'aide de la réponse ci-dessus j'ai trouvé la solution. cela peut aider les autres.

$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' ) ),
                ),
            )
        )
    );

Demande d'API comme: ..wp-json/wc/v2/home/produits /? Category = 89 & sort = popularité

0
Shameem Ali