معرفی وردپرس Rest API: عملیات Create, Read, Update, Delete

6 بهمن 1401

همانطور که میدانید هر سایتی که با وردپرس ساخته میشود دارای Rest API می باشد. ارائه داده ها در API باعث میشود بتوانید برای وردپرس خود اپلیکیشن های دیگری بسازید که اطلاعات وردپرس شما را نمایش دهد.

مثلا مقالات خود را در یک اپلیکیشن اندروید نمایش دهید تا مخاطبان در موبایل هم در کنار شما باشند. اطلاعات تکمیلی را در دایکومنتیشن سایت رسمی وردپرس بخوانید.

https://mysite.com/wp-json/wp/v2/types
https://mysite.com/wp-json/wp/v2/taxonomies

نه تنها سایت خود بلکه برای هر سایت دیگری نیز میتوانید این endpoint ها را امتحان کنید. بیایید تعداد بیشتری را بنویسیم.

برای گرفتن مقالات، دسته بندی ها و تگ ها به ترتیب از api های زیر استفاده میشود:

wp/v2/posts
wp/v2/categories
wp/v2/tags

اگر بخواهیم تعداد خاصی از مقالات را بگیریم با per_page مقدار ان را میدهیم:

wp/v2/posts?per_page=5
wp/v2/posts?per_page=100

مقدار بیشینه برای تعداد مقالات 100 تاست و اگر تعداد مقالات از 100 تا بیشتر باشد باید از page بعدی استفاده کنید:

wp/v2/posts?per_page=100&page=2

همچنین میتوانید تعدادی کمتر از 100 را در per_page قرار دهید و در مقابل تعداد page ها افزایش میابد.

اگر بخواهید مقالاتی با دسته بندی های خاصی را بگیرید:

wp/v2/posts?categories=106,99

اگر بخواهید slug یا tag های خاصی را بگیرید مشابه category است.

پیشنهاد میشود برای جلوگیری از اتلاف زمان بارگیری داده ها فقط فیلد های مورد نظر خود را بگیرید:

wp/v2/posts?_fields=id,title

اگر بخواهید داده های اضافی هم در هنگام گرفتن مقاله بگیرید. مثلا در هنگام بارگیری داده های مقالات فقط id های مربوط به category می اید و شما نام کتگوری را نمیبینید اما برای دیدن ان و اطلاعات بیشتر مثل tag و author میتوانید از _embed استفاده کنید. به شکل زیر:

wp/v2/posts?_embed=true

حالا برای اینکه یک تمرین کرده باشیم بیایید همه را با هم استفاده کنیم. صورت مسئله این است که میخواهیم مقالاتی که دسته بندی انها 106 است را به تعداد حداکثر 100 تا بگیریم و فقط به title و id مقالات نیاز داریم. اینگونه داده ها را درخواست میکنیم:

wp/v2/posts?per_page=100&categories=106&_fields=id,title

احراز هویت و نوشتن مقاله جدید با استفاده از Rest API

تا کنون API هایی را معرفی کردیم که شما میتوانستید روی بروزر امتحان کنید. همگی get بودند و post نبودند. همچنین برای سایت های دیگران هم میتوانستید تست کنید. اما حالا میخواهیم مقاله وارد کنیم یا حذف کنیم یا به روز رسانی کنیم. باید login شویم. برای انجام این کار از درخواست های post که با postman ارسال میشوند استفاده میکنیم.



### 1. Login

Login: 
* POST `jwt-auth/v1/token` - {username, password} - res.token, err.responseJSON.message
note: to logout just remove localStorage

### 2. post (post-type)

GetAll:
* GET `wp/v2/posts?per_page=5&_embed=true` - (empty)
note: doesn't need token

Create: 
* POST `wp/v2/posts/`- {title, content, status: 'publish'}
    * setRequestHeader('Authorization', 'Bearer' + token)

Update: 
* POST `wp/v2/posts/:id` - {title, content}
    * setRequestHeader('Authorization', 'Bearer' + token )

Delete:
* DELETE `wp/v2/posts/:id` - (empty)
    * setRequestHeader('Authorization', 'Bearer' + token )

میتوانید ویدیو اموزشی رایگان لیندا را در این رابطه تماشا کنید!