Wordpress Rest API özel uç nokta isteğe bağlı parametre


15

URL'de register_rest_route()isteğe bağlı parametrelerle kullanmak mümkün müdür ?

Diyelim ki rota şu şekilde kaydedildi:

register_rest_route( 'api', '/animals/(?P<id>\d+)', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

Artık / wp-json / api / animals / 15 gibi url'de api çağrısı yapmak mümkün , ancak / wp-json / api / animals / gibi rotayı yakalamak için parametreyi isteğe bağlı olarak bildirmenin bir yolu var .

Ayrıca rotayı aşağıdaki gibi ilan etmeyi denedim, ancak başarılı olamadım:

/animals/(?P<id>\d+)?

Param olmadan başka bir rota beyan edebilir veya GET parametrelerini kullanabilirsiniz, ancak bunu zaten içinde yapmanın bir yolu var register_rest_route()mı?

Önerileriniz için teşekkürler.

Yanıtlar:


19

Regex yolunun adlandırılmış parametrelerini isteğe bağlı bir yakalama grubuna koymalısınız:

register_rest_route( 'api', '/animals(?:/(?P<id>\d+))?', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

İkinci parametre basitçe bir regex'tir, böylece daha karmaşık hale getirmek için normal regex mantığını kullanabilirsiniz


3

Tek bir register_rest_routeişlev çağrısı ile yapmanın bir yolu olabilir , bunu nasıl yapacağımı bilmiyorum ve ideal olurdu . Ancak, register_rest_routeçengel yöntemde işlev çağrısını çoğaltmak istediğinizi yapar.

register_rest_route( 'api', '/animals/', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals'
] );

register_rest_route( 'api', '/animals/(?P<id>\d+)', [
   'methods' => WP_REST_Server::READABLE,
   'callback' => 'get_animals',
   'args' => [
        'id'
    ],
] );

Her durumu ele alan koşullara sahip olmak isteyeceğiniz get_animals yöntemidir. Bir idargüman ayarlanmışsa ve geri dönüş $_GETdeğişkenleri kontrol eder .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.