Benutzerdefinierter WordPress-REST-API-Endpunkt mit URL-Parameter

Lesezeit: 2 Minuten

Benutzerdefinierter WordPress REST API Endpunkt mit URL Parameter
Rob Gelhausen

Ich versuche, einen benutzerdefinierten Endpunkt für die WordPress-REST-API zu erstellen und Parameter über die URL zu übergeben.

Der Endpunkt ist derzeit:

/wp-json/v1/products/81838240219

Was ich erreichen möchte, ist ein Endpunkt, der so aussieht und in der Lage ist, den Kennungsparameter im Rückruf abzurufen.

/wp-json/v1/products?identifier=81838240219

// Custom api endpoint test
function my_awesome_func( $data ) {
  $identifier = get_query_var( 'identifier' );
  return $identifier;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'api/v1', '/products=(?P<id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'my_awesome_func',
  ) );
} );

Zuerst müssen Sie die übergeben Namensraum zu register_rest_route

So was

add_action( 'rest_api_init', function () {
    register_rest_route( 'namespace/v1', '/product/(?P<id>\d+)', array(
        'methods' => 'GET',
        'callback' => 'my_awesome_func',
    ) );
} );

Ihr Namensraum namespace/v1 und deine Route ist /product/{id} so was
/namespace/v1/product/81838240219

und jetzt können Sie die Route so in Ihrer Funktion verwenden

function my_awesome_func( $data ) {
    $product_ID = $data['id'];
}

Wenn Sie Optionen hinzufügen müssen, z.
/namespace/v1/product/81838240219?name=Rob

und verwenden Sie es innerhalb der Funktion wie folgt

function my_awesome_func( $data ) {
    $product_ID = $data['id'];
    $name = $data->get_param( 'name' );
}

Der Vorgang ist sehr einfach, erfordert jedoch, dass Sie dies lesen Dokumentation

  • Fantastisch. Vielen Dank für Ihre Hilfe.

    – Rob Gelhausen

    3. November 2018 um 17:00 Uhr

Ich habe die bereitgestellte Antwort ein wenig geändert, um meinen gewünschten Endpunkt zu erhalten:

/wp-json/api/v1/product?identifier=81838240219

add_action( 'rest_api_init', function () {
register_rest_route( 'api/v1', '/product/', array(
      'methods' => 'GET',
      'callback' => 'ea_get_product_data',
    ) );
} );

function ea_get_product_data( $data ) {
    $identifier = $data->get_param( 'identifier' );
    return $identifier;
}

Wenn Sie alphanumerische Parameter übergeben möchten, verwenden Sie [a-zA-Z0-9-] anstatt \d

add_action( 'rest_api_init', function () {
    register_rest_route( 'namespace/v1', '/product/(?P<id>[a-zA-Z0-9-]+)', array(
        'methods' => 'GET',
        'callback' => 'my_awesome_func',
    ) );
} );

1003510cookie-checkBenutzerdefinierter WordPress-REST-API-Endpunkt mit URL-Parameter

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy