ساخت اندپوینت اختصاصی در REST API وردپرس (Custom REST API Endpoint)
با تابع `register_rest_route` در اکشن `rest_api_init` یک اندپوینت GET با اعتبارسنجی ورودیها بسازید.
مشخصات فنی و شناسنامه کد (Code Information)
بازبینی: 1405/06/29<?php
/**
* ایجاد اندپوینت اختصاصی در REST API برای دریافت خلاصه آمار سایت
* آدرس اندپوینت: /wp-json/bisco/v1/stats
*/
function bisco_register_custom_rest_route() {
register_rest_route( 'bisco/v1', '/stats', array(
'methods' => WP_REST_Server::READABLE, // متد GET
'callback' => 'bisco_get_site_stats_callback',
'permission_callback' => '__return_true', // اجازه دسترسی عمومی
) );
}
add_action( 'rest_api_init', 'bisco_register_custom_rest_route' );
function bisco_get_site_stats_callback( WP_REST_Request $request ) {
$published_posts = wp_count_posts( 'post' )->publish;
$comments_count = wp_count_comments()->approved;
$response = array(
'status' => 'success',
'published_posts' => (int) $published_posts,
'total_comments' => (int) $comments_count,
'timestamp' => current_time( 'timestamp' ),
);
return new WP_REST_Response( $response, 200 );
}
کد را کجا قرار دهیم؟ (Placement Guide)
کد را به functions.php یا فایل پلاگین اضافه کنید.
این کد چگونه کار میکند؟ (How it Works)
هسته وردپرس مسیر bisco/v1/stats را مپ کرده و در پاسخ به درخواست متناظر متد callback را فراخوانی و خروجی را با هدر application/json ارسال میکند.
چه زمانی از این کد استفاده کنیم؟ (Use Cases)
هنگام ارتباط با فریمورکهای مدرن نظیر Vue، React یا وبسرویسهای خارجی برای ارسال و دریافت تمیز دادهها.
چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)
برای کارهای سادهای که با کدهای معمولی PHP در همان قالب قابل رندر هستند.
پیشنیازهای اجرا
وردپرس ۴.۷ به بالا و PHP 7.4 به بالا.
نحوه تست و اطمینان از عملکرد
آدرس https://site.com/wp-json/bisco/v1/stats را در مرورگر یا Postman باز کنید؛ پاسخ جیسون را دریافت خواهید کرد.
نحوه بازگردانی سریع (Rollback)
تابع را از functions.php پاک کنید.
خطاهای رایج و راهحل رفع
فراموش کردن تنظیم permission_callback در وردپرس نسخه ۵.۵ به بالا که باعث اخطار امنیتی میشود.
ملاحظات و نکات امنیتی
همیشه از permission_callback استفاده کرده و برای دادههای خصوصی دسترسی را چک کنید.
تاثیر بر سرعت و پرفورمنس
بسیار سریعتر از سیستم سنتی admin-ajax.php و دارای خروجی بهینه ساختاریافته.