FA-TOOLS — Header Component

آموزش جامع REST API وردپرس: از مفاهیم پایه تا ساخت Endpoint سفارشی و امنیت

خلاصه سریع: REST API وردپرس رابطی استاندارد است که به شما اجازه می‌دهد از تمام داده‌های وب‌سایت خود (پست‌ها، کاربران، محصولات) در پلتفرم‌های دیگر مانند اپلیکیشن‌های موبایل، فرانت‌اند مجزا (Headless) یا اسکریپت‌های هوشمند استفاده کنید. با مطالعه این مقاله، نحوه خواندن، نوشتن، ساخت مسیرهای اختصاصی (Custom Endpoints) و ایمن‌سازی رابط داده‌ها را به‌صورت کاملاً عملی خواهید آموخت.

REST API وردپرس ساختار هسته این سیستم مدیریت محتوا را از حالت یک معماری یکپارچه (Monolithic) به یک سیستم کاملاً انعطاف‌پذیر تبدیل کرده است. با استفاده از این رابط، وردپرس دیگر صرفاً یک ابزار تولید سایت‌های PHP نیست؛ بلکه به یک دیتابیس و بک‌اند پرقدرت تبدیل می‌شود که داده‌های خود را در قالب استاندارد JSON در اختیار هر برنامه‌ای قرار می‌دهد.

۱. REST API وردپرس چیست و چه کاربردی دارد؟

آموزش REST API وردپرس — تصویر 2

پاسخ کوتاه: REST API وردپرس یک رابط برنامه‌نویسی است که امکان تعامل نرم‌افزارهای خارجی با پایگاه داده وردپرس را از طریق درخواست‌های HTTP و با فرمت JSON فراهم می‌کند.

تا قبل از معرفی رسمی REST API در هسته وردپرس، تعامل با داده‌های سایت تنها از طریق توابع PHP داخل قالب‌ها و پلاگین‌ها ممکن بود. اما اکنون می‌توانید وردپرس را به عنوان دیتابیس اصلی نگه داشته و بخش جلویی (Frontend) را با ری‌اکت (React)، ویو (Vue.js) یا حتی فلاتر (Flutter) توسعه دهید.

مهم‌ترین سناریوهای کاربردی REST API وردپرس عبارتند از:

  • توسعه وب‌سایت‌های Headless CMS جهت افزایش فوق‌العاده سرعت بارگذاری
  • ساخت اپلیکیشن‌های موبایل (Android / iOS) متصل به دیتابیس وردپرس
  • همگام‌سازی داده‌های سایت با سیستم‌های CRM، انبارداری و نرم‌افزارهای حسابداری
  • اتصال اسکریپت‌های اتوماسیون با کدهای پایتون جهت به‌روزرسانی خودکار محتوا یا محصولات

۲. نحوه کارکرد REST API و ساختار درخواست‌ها (HTTP Methods)

آموزش REST API وردپرس — تصویر 3

تعامل با API بر پایه دو مفهوم اصلی انجام می‌شود: Route (مسیر) و Endpoint (نقطه پایانی). مسیر مانند آدرس یک خیابان است و Endpoint متدی است که مشخص می‌کند در آن آدرس چه عملیاتی انجام شود.

آدرس پایه REST API در تمامی سایت‌های وردپرسی به این صورت است:

https://example.com/wp-json/wp/v2/

چهار روش اصلی استاندارد HTTP برای تعامل با داده‌ها استفاده می‌شوند:

  • GET: برای دریافت اطلاعات (مثلاً خواندن لیست پست‌ها یا محصولات). این روش فقط خواندنی است و تغییر در دیتابیس ایجاد نمی‌کند.
  • POST: برای ایجاد یک داده جدید (مثلاً ثبت یک پست جدید یا ارسال دیدگاه).
  • PUT / PATCH: برای ویرایش داده‌های موجود. (PUT داده را کلاً جایگزین می‌کند و PATCH فقط فیلدهای مشخصی را تغییر می‌دهد).
  • DELETE: برای حذف یک داده از دیتابیس.

۳. روش‌های احراز هویت در REST API وردپرس

آموزش REST API وردپرس — تصویر 4

پاسخ کوتاه: برای دسترسی به داده‌های عمومی (GET) نیازی به احراز هویت نیست، اما برای ویرایش، حذف یا ایجاد داده‌ها باید دسترسی شما از طریق Cookie Authentication، Application Passwords یا JWT تایید شود.

سه روش اصلی احراز هویت در وردپرس عبارتند از:

  1. کوکی (Cookie Authentication): روش استاندارد وردپرس هنگام استفاده از AJAX درون قالب یا پنل مدیریت. این روش از Nonce وردپرس (`wp_rest`) برای تایید درخواست‌های مرورگر استفاده می‌کند.
  2. رمزهای عبور برنامه (Application Passwords): این ویژگی به صورت بومی از وردپرس ۵.۶ اضافه شد. به شما اجازه می‌دهد از طریق پنل کاربری برای برنامه‌های خارجی یک توکن اختصاصی بسازید، بدون اینکه رمز عبور اصلی مدیر افشا شود.
  3. توکن JWT (JSON Web Token): بهترین روش برای اپلیکیشن‌های موبایل و سامانه‌های مجزا. این روش نیازمند نصب افزونه‌های استاندارد JWT روی وردپرس است.

۴. دریافت و ارسال داده با جاوا اسکریپت و cURL

آموزش REST API وردپرس — تصویر 5

برای دریافت آخرین پست‌های یک وب‌سایت وردپرسی، ساده‌ترین راه ارسال درخواست GET با استفاده از کدهای جاوا اسکریپت در مرورگر یا فرانت‌اند است:

// دریافت آخرین ۵ پست از وردپرس
fetch(‘https://example.com/wp-json/wp/v2/posts?per_page=5’)
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => console.error(‘Error:’, error));

اگر قصد دارید با ابزارهای سمت سرور یا ترمینال تست بگیرید، می‌توانید دستور cURL زیر را اجرا کنید:

curl -X GET https://example.com/wp-json/wp/v2/posts

۵. آموزش گام‌به‌گام ساخت Endpoint سفارشی در وردپرس

گاهی اوقات مسیرهای استاندارد وردپرس داده‌های سنگین اضافی برمی‌گردانند یا منطق محاسباتی خاصی را که نیاز دارید پوشش نمی‌دهند. برای حل این مشکل، می‌توانید مسیر سفارشی خود را ثبت کنید.

برای اضافه کردن مسیرهای دلخواه، باید از قطعه کدهای وردپرس در فایل functions.php یا یک پلاگین اختصاصی استفاده کنید.

مراحل ثبت مسیر جدید با `register_rest_route`:

  1. اتصال تابع به اکشن rest_api_init.
  2. تعریف فضای نام (Namespace)، مسیر (Route) و تنظیمات متد، کالبک و سطح دسترسی.
  3. نوشتن تابع Callback جهت پردازش و بازگرداندن داده‌ها.

نمونه کد کامل ساخت یک Endpoint سفارشی برای دریافت آمار خلاصه وب‌سایت:

add_action( ‘rest_api_init’, function () {
    register_rest_route( ‘mycustom/v1’, ‘/stats/’, array(
        ‘methods’ => ‘GET’,
        ‘callback’ => ‘my_custom_stats_callback’,
        ‘permission_callback’ => function () {
            return current_user_can( ‘read’ );
        },
    ) );
} );

function my_custom_stats_callback( $request ) {
    $count_posts = wp_count_posts();
    $count_users = count_users();

    $response = array(
        ‘total_published_posts’ => $count_posts->publish,
        ‘total_registered_users’ => $count_users[‘total_users’],
        ‘status’ => ‘success’
    );

    return new WP_REST_Response( $response, 200 );
}

نکته تخصصی: هیچ‌گاه تابع permission_callback را با __return_true به حال خود رها نکنید؛ مگر اینکه مسیر شما کاملاً عمومی باشد. عدم بررسی سطح دسترسی در این بخش، علت اصلی ایجاد رخنه‌های امنیتی در APIها است.

۶. مقایسه روش‌های توسعه با و بدون REST API

جدول زیر تفاوت کلیدی توسعه سنتی وردپرس با معمار مبتنی بر REST API را خلاصه می‌کند:

ویژگی توضیحات و کاربرد
معماری کلاسیک (PHP/HTML) رندر صفحات سمت سرور (SSR) است. خروجی نهایی به صورت کدهای HTML سنگین ارسال می‌شود و سرعت بارگذاری وابسته به هاست است.
معماری REST API (Headless) فقط داده خام با فرمت JSON جابه‌جا می‌شود. فرانت‌اند مستقل بوده و با کدهای CSS و فریم‌ورک‌های مدرن پردازش سریع انجام می‌دهد.
انعطاف‌پذیری پلتفرم محدود به وب‌سایت. اما با REST API می‌توانید همزمان یک دیتابیس را به وب، اپلیکیشن اندروید، iOS و ربات تلگرام متصل کنید.
پیچیدگی توسعه روش کلاسیک بسیار ساده‌تر است. توسعه با API نیازمند مدیریت CORS، توکن‌های احراز هویت و کشینگ سمت کلاینت است.

۷. افزایش امنیت و بهینه‌سازی عملکرد REST API

با اینکه REST API بسیار کارآمد است، اما اگر بهینه‌سازی نشود می‌تواند فشار سنگینی به دیتابیس وارد کند یا اطلاعات کاربران سایت را لو دهد.

  • محدود ساختن Endpointهای کاربران: مسیر /wp/v2/users لیستی از نام‌های کاربری را به‌صورت عمومی افشا می‌کند. با اعمال فیلترهای مناسب این مسیر را فقط برای کاربران ورودکرده محدود کنید.
  • استفاده از پارامتر _fields: هنگام ارسال درخواست GET، همیشه مشخص کنید چه فیلدهایی نیاز دارید (مثلا ?_fields=id,title,slug). این کار حجم JSON خروجی را تا ۹۰٪ کاهش می‌دهد.
  • فعال‌سازی کش (WP REST Cache): خروجی‌های API را کش کنید تا سرور مجبور نباشد برای هر درخواست ساده، ده‌ها کوئری سنگین دیتابیس بزند.
  • اعتبارسنجی ورودی‌ها: همیشه ورودی‌های دریافت شده را پاک‌سازی کنید. اگر برای پروژه‌های پیشرفته از سایر ابزارها استفاده می‌کنید، می‌توانید کدهای خود را با دسترسی به مجموعه کاملی از کدهای کاربردی توسعه دهید.

۸. عیب‌یابی سریع مشکلات رایج

خطای 404 Not Found هنگام فراخوانی مسیرها

علت و حل سریع: ساختار پیوندهای یکتا (Permalinks) در حالت «ساده» قرار دارد. به تنظیمات > پیوندهای یکتا در وردپرس بروید و آن را روی حالت «نام نوشته» قرار داده و ذخیره کنید تا قوانین Rewrite مجدداً بازسازی شوند.

خطای CORS (Cross-Origin Resource Sharing)

علت و حل سریع: دامنه‌ای که درخواست ارسال می‌کند با دامنه وردپرس متفاوت است. برای حل این مشکل باید هدر Access-Control-Allow-Origin را در فایل .htaccess یا از طریق PHP روی سرور فعال کنید.

خطای 401 Unauthorized یا 403 Forbidden

علت و حل سریع: عدم ارسال یا اشتباه بودن توکن احراز هویت / Nonce. اگر از Application Password استفاده می‌کنید، هدر Authorization را چک کنید که به‌صورت Basic Auth انکود شده باشد.

۹. پرسش‌های متداول

آیا غیرفعال کردن REST API وردپرس کار درستی است؟

خیر؛ غیرفعال کردن کامل آن باعث از کار افتادن ویرایشگر بلوک (گوتنبرگ)، افزونه‌های مدرن و سلامت سایت می‌شود. بهتر است فقط مسیرهای حساس را محدود کنید.

آیا می‌توان داده‌های متاسفیلد (Custom Fields) را در REST API دریافت کرد؟

بله؛ باید هنگام ثبت متاسفیلد با تابع register_post_meta، مقدار 'show_in_rest' => true را تنظیم کنید.

فرمت خروجی REST API وردپرس چیست؟

تمامی داده‌ها به‌صورت استاندارد و کلید-مقداری در فرمت JSON (JavaScript Object Notation) بازگردانده می‌شوند.

آیا REST API با ووکامرس هم هماهنگ است؟

بله؛ ووکامرس دارای یک REST API بسیار قدرتمند و جداگانه با فضای نام /wc/v3/ است که مدیریت کامل محصولات، سفارش‌ها و مشتریان را ممکن می‌سازد.

Table of Contents

آخرین نوشته‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *