REST API وردپرس رابطیه که در حال تغییر وردپرس است. البته شاید شما متوجه این اتفاق نشده باشین چون بخش اعظمی ازاون مشخص نیست اما پیامدهایی که داره، چه از نظر کدهای پایه و چه کاربردهای اون، تفاوت خیلی زیادی در آینده ایجاد میکنه.

اگه با WordPress REST API کار نکردین، ممکنه خبر نداشته باشین که این ابزار دقیقاً چیه و چه کار میکنه پس بهتره این مقاله رو خوب مطالعه کنین تا این موضوع رو بهتر درک کنین.

REST API وردپرس چیه؟

REST API وردپرس رابطی است که توسعه دهندگان میتونن از اون برای دسترسی به وردپرس بیرون از فضای نصب خود وردپرس استفاده کنن. شما از طریق JavaScript به اون رابط دسترسی دارین که به معنیه اینه که میتونین از اون برای ساخت یه وبسایت یا برنامه جذاب استفاده کنین.

پس یعنی WP REST API یه رابط برای برقراری ارتباط بین وبسایت های شخص ثالث با وردپرس است، بدون این که زبان برنامه نویسی اون وبسایت ها مهم باشه!

REST مخفف عبارت Representational State Transfer و API مخفف Application Programming Interface است. حالا بیایین یه نگاهی بندازیم ببینیم هرکدوم از اینها چه معنی میدن:

رابط برنامه نویسی یا API چیه؟

یه رابط یا پروتکل ارتباطی بین مشتری و سرور برای ساده سازی ساختمان نرم افزار است.

اگه با API ها آشنا نیستین ممکنه این تعریف کمک زیادی بهتون نکنه. پس اگه بخوایم همه چی رو یکم ساده‌تر بگیم میشه: API مجموعه‌ای از کدهایی است که به یه سیستم امکان تعامل با یه سیستم دیگه رو میده!

مثلاً اگه تا حالا نقشه گوگل رو به سایت وردپرس خودتون اضافه کردین یعنی از API گوگل مپ استفاده کردین که به سایت شما اجازه میده تا با Google Map از طریق یه واسط کار کنین.

خود وردپرس قبلاً چندتا API داشته، مثلاً پلاگین ها، تنظیمات و شورت کدها. اینها میتونن توسط افزونه ها و توسعه دهندگان تم مورد استفاده قرار بگیرن تا با هسته وردپرس ارتباط برقرار کنن!

منتها تفاوت REST API وردپرس در اینه که به سیستم‌های خارج از نصب وردپرس اجازه میده تا با وردپرس ارتباط برقرار کنن و این همون قسمت REST داستانه!

REST چیه؟

REST یا Representational State Transfer معیارهایی رو ارائه میده که سیستم‌های وب میتونن از اون برای اتصال به همدیگه استفاده کنن. در واقع بدون وجود REST دو تا سیستم قادر به درک همدیگه نیستن.

برای این که یه برنامه RESTful باشه باید با پنج‌تا اصل مطابقت کنه:

  • رابط یکنواخت: URL های مورد استفاده برای دسترسی به منابع در سیستم باید از طریق یه رویکرد رایج مثل GET، یکنواخت، سازگار و در دسترس باشن.
  • Client-Server: برنامه های مشتری و برنامه های وب باید جداگونه باشن؛ بنابراین میتونین اونها رو به طور مستقل از یکدیگر توسعه بدین. اگه فناوری سمت سرور (یعنی وردپرس) تغییر کنه، برنامه سمت سرور (یه اپلیکیشن) هنوز باید از طریق همون روش ساده به اون دسترسی داشته باشه.
  • قابلیت ذخیره: برای بهبود سرعت و مطابقت با استانداردهای وب، کلیه منابع باید دارای حافظه پنهان یا همون کش باشن. ذخیره سازی میتونه روی سرور یا مرورگر انجام بشه.
  • سیستم لایه‌ای: یه سیستم RESTful بهتون اجازه میده از چندین لایه برای دسترسی به اون استفاده کنین و در صورت نیاز داده ها رو در سرورهای متوسط ذخیره کنین. سرور نمیتونه بگه که مشتری نهایی به طور مستقیم به اون وصل شده یا نه!

همه این محدودیت‌ها مربوط به صفحات وب و برنامه‌هاست و نحوه ارتباط یه برنامه با API رو تعیین میکنن.

این عوامل برای وردپرس به معنی است؟

قرار دادن REST و API در کنار هم به این معنیه که REST API وردپرس یه مجموعه‌ای از کدهاست که به منظور ایجاد یه رابط بین وردپرس و سایر برنامه ها، به گونه‌ای ساخته شده که تضمین میکنه این سیستم ها همدیگه رو درک میکنن.

منظورمون اینه که مثلاً یه وبسایت شخص ثالث یا یه برنامه تلفن همراه، میتونه به پایگاه داده وردپرس شما دسترسی پیدا کنه و داده های موجود رو از اون بگیره و یا داده هایی رو به اون اضافه کنه.

درک WordPress REST API

REST API وردپرس در پاسخ به تغییرات در نحوه توسعه وبسایت ها و برنامه‌ها ساخته شده.

تاریخچه REST API وردپرس

WordPress REST API در دسامبر سال ۲۰۱۶ به عنوان بخشی از هسته وردپرس به نسخه ۴.۷ اضافه شد در حالی که قبلاً فقط به عنوان یه افزونه بود.

این تکنولوژی طراحی شد تا از طیف وسیعی از برنامه های ساخته شده در وردپرس و تبدیل وردپرس از یه سیستم مدیریت محتوا CMS به یه بستر برنامه پشتیبانی کنه!

این رابط توسط WordPress.com که رابط مبتنی بر جاوااسکریپته، از REST API برای اتصال به پایگاه داده وردپرس استفاده میکنه. همچنین این رابط توسط ویرایشگر گوتنبرگ هم که درسال ۲۰۱۹ بخشی از هسته شد، استفاده میکنه.

REST API دامنه برنامه هایی رو که وردپرس میتونه از اونها استفاده کنه، گسترده‌تر میکنه. در حالی که یه سیستم مدیریت محتوا در اجرای یه وبسایت پیچیده برتری داره، یه پلتفرم برنامه میتونه برای قدرت بخشیدن به SPA ها و اپلیکیشن های تک صفحه‌ای مبتنی بر وب استفاده بشه.

در این مدل‌ها به جای بارگذاری صفحات جدید، وقتی که کاربر کاری انجام میده، محتوا رفرش میشه. از اونجایی که از JavaScript (زبان سمت کاربر) به جای PHP (زبان سمت سرور) استفاده میشه، پس میتونه بدون نیاز به ارسال مداوم درخواست به سرور، باعث بشه که پاسخ مناسب در مرورگر کاربر اتفاق بیفته!

پیامدهای مربوط به کاربران و توسعه دهندگان وردپرس

اگه کاربر یا توسعه دهنده‌ای هستین که با وردپرس کار میکنه، REST API وردپرس میتونه برای شما پیامدهایی رو به همراه داشته باشه.

این پیامدها برای کاربران عبارتند از:

  • تغییر در رابط، از جمله ویرایشگر گوتنبرگ
  • تغییرات و پیشرفت‌هایی در برنامه تلفن همراه وردپرس
  • شباهت بیشتر صفحه‌های مدیریتی Self-hosted در وردپرس به WordPress.com

این پیامدها برای توسعه دهندگان عبارتند از:

  • امکان ایجاد SPA با استفاده از REST API، بیرون کشیدن داده ها از WordPress
  • امکان ادغام وردپرس با سایر فناوری‌ها و سیستم‌های فرانت اند
  • برای توسعه دهندگان PHP، نیاز فزاینده‌ای به گسترش مهارت‌ها در مواردی مثل جاوا اسکریپت داره
  • امکان توسعه با وردپرس، اگه شما برنامه نویس فرانت اندی هستین که PHP نمیدونه
  • تغییرات خاص مثل نیاز به ساختن بلوک های گوتنبرگ به جای باکس‌های متا در صفحات ویرایش پست

در طول زمان، WP REST API ابزاریه که باعث میشه هسته وردپرس به زبان جاوا اسکریپت نوشته بشه نه PHP. پس اگه شما یه توسعه دهنده وردپرس هستین، باید کم کم زبان JavaScript رو یاد بگیرین 🙂

نحوه دسترسی به REST API وردپرس

برای دسترسی به WP REST API باید از طریق خط فرمان (Command Line) به سایت خودتون دسترسی پیدا کنین که در وردپرس بهش میگن WP-CLI.

یادتون باشه که شما قرار نیست از طریق صفحه ادمین یا با دسترسی مستقیم به کدهای سایت خودتون کاری رو انجام بدین!

خب حالا بیایین یه نگاهی به نحوه شروع کار بندازیم:

دسترسی به REST API از طریق WP-CLI

WP-CLI رابط خط فرمان در وردپرس است که به شما امکان میده تا از طریق Command Line Interface یا همون CLI به وردپرس متصل بشین و با همه برنامه های اون کار کنین.

برای دسترسی به CLI باید Terminal رو روی یه Mac یا در Linux یا Command Prompt ویندوز باز کنین.

REST API وردپرس

برای دسترسی از راه دور به یه سایت، باید SSH رو به سرور خودتون وارد کنین تا از طریق WP-CLI به اون دسترسی پیدا کنین.

برای دسترسی به یه سایت لوکال شما فقط باید از ساختار درست دایرکتوری خط فرمان استفاده کنین. این ایده خوبیه فقط قبل از امتحان کردن اون تو یه سایت لایو، در یه سایت لوکال امتحانی اون رو با REST API تست کنین.

شما بابد به طور خاص برای سایت خودتون به REST API دسترسی داشته باشین، مثل مورد زیر:

http://yoursite.com/wp-json/wp/v2

بعد از اون میتونین عناصر دیگه رو اضافه کنین تا به انواع خاصی از داده ها دسترسی پیدا کنین که به اونها نقاط انتهایی میگیم!

احراز هویت

پس از دسترسی به سایت خودتون ممکنه نیاز به تایید اعتبار داشته باشین. برخی از نقاط انتهایی عمومی هستن و نیازی به این کار ندارن در صورتی که بعضی دیگه اینطور نیستن!

در این قسمت وارد پنل ادمین نمیشین چون قراره با REST API وردپرس کار کنیم و سلسله مراتب کارها یکم متفاوته!

برای این که بتونین از طریق WP-CLI تایید اعتبار سایت خودتون رو انجام بدین باید یه افزونه تایید اعتبار نصب کنین که پلاگین Basic Auth پیشنهاد خوبیه!

با این حال برای سایت های لایو باید از فرم تایید محکم‌تری مثل افزونه JWT Authentication رو به کار ببرین که از JASON web Token استفاده کرده و امنیت بیشتری هم داره.

بعد از این میتونین از خط فرمان برای دسترسی به داده ها استفاده کنین و تایید اعتبار رو هم در اون وارد کنین.

در مثال زیر از curl برای تست اتصال به وردپرس استفاده شده که یه لیست از پیش نویس پست ها رو تولید میکنه.


             curl -X GET --user username:password -i http://yoursite.com/wp-json/wp/v2/posts?status=draft
                            

پیش نویس پست ها اطلاعات عمومی نیستن، بنابراین برای دسترسی به اونها به تایید اعتبار نیاز دارین. اما اگه یه سری اطلاعات عمومی خواسین همه چی اوکیه و اصلاً نیازی به این تایید اعتبار ندارین! پس برای بازیابی لیستی از پست های منتشر شده، میتونین از روش زیر استفاده کنین:


            curl -X GET http://yoursite.com/wp-json/wp/v2/posts
                            

نگاه کلی به فرمان‌های REST API وردپرس

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

  • GET: منبعی مانند پست ها یا برخی داده های دیگه رو بازیابی میکنه.
  • POST: منبعی مانند پست، پیوست یا منابع دیگه رو به سرور اضافه مکیکنه.
  • PUT: منبعی که در حال حاضر روی سرور است رو ویرایش یه به روز رسانی میکنه.
  • DELETE: منبعی که روی سرور هست رو پاک میکنه (حواستون به این یکی باشه و با احتیاط ازش استفاده کنین).

چه موقع نباید از REST API استفاده کنیم؟

درسته که ما کلی به به و چه چه کردیم برای این رابط ولی خب اینطور هم نیست که همیشه به کار ما بیاد! یه وقت‌هایی بهتره که ازش استفاده نکنیم. حالا ما اومدیم این وقت‌هایی که باید حواسمون بهش باشه رو برای شما دسته بندی کردیم تا با احتیاط بیشتری سراغشون برین:

سازگاری

اگه برنامه شما در دستگاه هایی که جاوا اسکریپت رو نمیخونن یا توسط کاربرانی که احتمالاً اون رو خاموش کردن استفاده میشه، REST API اجرا نمیشه!

نکته
دستگاه‌هایی که از جاوا اسکریپت استفاده نمیکنن خیلی کمیابن و شاید اصلاً به صرفه نباشه برای اونها به طور خاص برنامه‌ای رو توسعه بدین.

یه سایت وردپرس کد گذاری شده در PHP میتونه HTML تولید میکنه؛ بنابراین از این مشکل رنج نمیبره.

دسترسی پذیری

سایت ها یا برنامه‌های توسعه یافته با JavaScript همیشه به اندازه برنامه های توسعه یافته با HTML در دسترس نیستن. این بیشتر به دلیل استفاده از جاوا اسکریپت برای ارائه محتوای پویا است، که ممکنه به خوبی در صفحه نمایش پخش نشه و مشکلاتی رو برای افرادی که ناتوانایی‌های جسمی دارن به وجود بیاره.

سئو

برنامه های تک صفحه‌ای که بارها و بارها رفرش میشن، گاهی اوقات میتونن باعث بروز مشکلات سئویی بشن. گوگل و سایر موتورهای جستجو با این واقعیت روبرو هستن که اکنون بسیاری از وبسایت ها دارای SPA هستن و به طور مناسب اونها رو فهرست میکنن. اما برای REST API داستان اینطور نیست. پس حواستون رو جمع کنین.

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

یه سری برنامه‌هایی هم هستن که از این رابط استفاده میکنن و بهتره شما هم با اونها آشنا بشین:

  • WordPress.com

وردپرس

  • (The Block Editor (Gutenberg

REST API وردپرس

  • Event Espresso

Event Espresso

  • UsTwo

UsTwo

  • USA Today

USA Today