พารามิเตอร์ปลายทางที่กำหนดเองของ Wordpress Rest API


15

เป็นไปได้ไหมที่จะใช้register_rest_route()กับพารามิเตอร์ที่เป็นตัวเลือกใน url

สมมติว่าเส้นทางมีการลงทะเบียนด้วยวิธีนี้:

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

ตอนนี้มันเป็นไปได้ที่จะดำเนินการเรียก API บน URL เช่น/ WP-JSON / API / สัตว์ / 15แต่จะมีวิธีที่จะประกาศพระรามเป็นตัวเลือกที่จะยังจับเส้นทางเช่น/ WP-JSON / API / สัตว์ /

ฉันพยายามประกาศเส้นทางเช่นด้านล่าง แต่ไม่ประสบความสำเร็จ:

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

คุณสามารถประกาศเส้นทางอื่นโดยไม่มีพารามิเตอร์หรือใช้ GET params แต่มีวิธีการทำเช่นนี้แล้วในregister_rest_route()?

ขอบคุณสำหรับคำแนะนำของคุณ

คำตอบ:


18

คุณควรใส่พารามิเตอร์ที่มีชื่อของเส้นทาง regex ลงในกลุ่มการจับภาพเสริม:

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

พารามิเตอร์ที่สองเป็นเพียง regex ดังนั้นคุณสามารถใช้ตรรกะ regex ปกติเพื่อทำให้ซับซ้อนมากขึ้น


3

อาจมีวิธีที่จะทำด้วยregister_rest_routeการเรียกใช้ฟังก์ชั่นเดียวฉันไม่ทราบวิธีการทำและมันจะเหมาะ อย่างไรก็ตามการทำซ้ำการregister_rest_routeเรียกฟังก์ชันในเมธอด hooked จะทำสิ่งที่คุณต้องการ

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

มันเป็นวิธีการ get_animals คุณจะต้องมีเงื่อนไขที่จัดการแต่ละกรณี หนึ่งสำหรับถ้าidตั้งค่าหาเรื่องและทางเลือกตรวจสอบ$_GETตัวแปร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.