WordPress'ni ko'pchilik faqat oddiy blog yoki sayt platformasi deb biladi, lekin uning ichida juda kuchli vosita yashiringan โ REST API. Bu interfeys WordPress saqlagan barcha ma'lumotlarni (postlar, sahifalar, foydalanuvchilar, taksonomiyalar, izohlar) standart JSON formatida tashqi dasturlarga ochib beradi. Natijada WordPress endi shunchaki sahifa chizadigan tizim emas, balki to'laqonli kontent backendiga aylanadi, ya'ni frontend qismini istalgan texnologiyada qurib, undan faqat ma'lumot manbasi sifatida foydalanishingiz mumkin.
Bu g'oya zamonaviy veb-dasturlashda "headless WordPress" deb ataladi. Bunda WordPress admin paneli kontent boshqaruvi uchun qoladi, ammo foydalanuvchiga ko'rinadigan interfeys React, Vue, Next.js yoki mobil ilova ko'rinishida alohida quriladi. Bunday ajratish saytni tezroq, xavfsizroq va moslashuvchanroq qiladi, chunki frontend va backend bir-biriga bog'liq bo'lmagan holda rivojlantiriladi. Agar siz dasturchi bo'lsangiz, REST API sizga WordPress ekotizimining barcha qulayliklarini saqlab qolgan holda zamonaviy interfeyslar qurish imkonini beradi.
REST API qanday ishlaydi va asosiy endpointlar
WordPress REST API barcha so'rovlarni /wp-json/ manzili ostida qabul qiladi. Asosiy yadro endpointlari wp/v2 nomli versiyalangan bo'shliqda joylashgan, bu kelajakda API o'zgarsa ham eski integratsiyalar buzilmasligini ta'minlaydi. Eng ko'p ishlatiladigan manzillar โ postlar, sahifalar, foydalanuvchilar va kategoriyalarni qaytaruvchi endpointlar bo'lib, ularning har biri standart HTTP usullari orqali boshqariladi.
GET /wp-json/wp/v2/posts # barcha postlar ro'yxati
GET /wp-json/wp/v2/posts/42 # ID 42 bo'lgan post
GET /wp-json/wp/v2/pages # sahifalar
GET /wp-json/wp/v2/users # foydalanuvchilar
GET /wp-json/wp/v2/categories # kategoriyalar
# Filtrlash va sahifalash parametrlari
GET /wp-json/wp/v2/posts?per_page=5&page=2&search=domen&orderby=date
Har bir javob JSON massiv yoki obyekt ko'rinishida qaytadi va unda postning sarlavhasi, kontenti, sanasi, muallifi hamda boshqa metama'lumotlar bo'ladi. Brauzerda oddiygina https://saytingiz.uz/wp-json/wp/v2/posts manzilini ochib, bu ma'lumotlarni darhol ko'rishingiz mumkin โ hech qanday plagin o'rnatish shart emas, chunki REST API WordPress yadrosiga kiritilgan.
Ma'lumotlarni o'qish: GET so'rovlari
O'qish operatsiyalari odatda autentifikatsiyasiz ishlaydi, chunki nashr qilingan postlar har qanday tashrifchi uchun ochiq. JavaScript yordamida zamonaviy frontend'da ma'lumot olish quyidagicha amalga oshiriladi. Bu misol oxirgi beshta postni olib, ularning sarlavhalarini ekranga chiqaradi va aynan shu yondashuv React yoki Vue ilovasining asosini tashkil etadi.
async function getPosts() {
const response = await fetch(
'https://example.uz/wp-json/wp/v2/posts?per_page=5&_embed'
);
const posts = await response.json();
posts.forEach(post => {
console.log(post.title.rendered);
console.log(post.excerpt.rendered);
});
}
getPosts();
_embed parametri alohida ahamiyatga ega, chunki u javobga muallif ma'lumotlari va asosiy rasm (featured image) kabi bog'liq obyektlarni qo'shadi. Busiz har bir rasm yoki muallif uchun alohida so'rov yuborishga to'g'ri kelardi, bu esa ilovani sekinlashtirardi. Demak, bitta optimal so'rov bilan butun postni to'liq ko'rsatish uchun zarur barcha ma'lumotni olishingiz mumkin.
Autentifikatsiya: application passwords va JWT
Ma'lumot yozish, tahrirlash yoki o'chirish uchun esa albatta autentifikatsiya kerak bo'ladi, aks holda istalgan kishi saytingiz kontentini o'zgartira olar edi. WordPress 5.6 versiyasidan boshlab yadroda "Application Passwords" mexanizmi mavjud bo'lib, u asosiy parolni oshkor qilmasdan API uchun alohida maxfiy kalit yaratish imkonini beradi. Bu kalit foydalanuvchi profilidan generatsiya qilinadi va har qanday vaqtda bekor qilinishi mumkin.
# Application password bilan post yaratish (HTTP Basic Auth)
curl -X POST https://example.uz/wp-json/wp/v2/posts \
-u "admin:xxxx xxxx xxxx xxxx xxxx xxxx" \
-H "Content-Type: application/json" \
-d '{
"title": "API orqali yaratilgan post",
"content": "Bu kontent dastur orqali yuborildi.",
"status": "publish"
}'
Murakkabroq loyihalarda, ayniqsa mobil ilovalarda, JWT (JSON Web Token) usuli ko'proq qo'l keladi. Bunda foydalanuvchi bir marta login va parol bilan token oladi, keyin esa har bir so'rovda shu tokenni Authorization: Bearer sarlavhasi orqali yuboradi. JWT yondashuvi maxsus plagin orqali o'rnatiladi va u stateless, ya'ni server tomonda sessiya saqlashni talab qilmaydi, shuning uchun katta yuklamali ilovalarda yaxshi masshtablanadi.
Maxsus endpoint yaratish
Standart endpointlar barcha ehtiyojlarni qoplamasligi mumkin, masalan, siz bir nechta jadvaldan ma'lumotni birlashtiradigan yoki maxsus mantiq talab qiladigan javob xohlashingiz mumkin. Bunday holatda WordPress'ning register_rest_route funksiyasi yordamida o'zingizning endpointingizni yaratasiz. Quyidagi kod mavzu fayliga yoki plaginga qo'shilib, yangi /wp-json/myapp/v1/featured manzilini hosil qiladi.
add_action('rest_api_init', function () {
register_rest_route('myapp/v1', '/featured', [
'methods' => 'GET',
'callback' => 'myapp_get_featured',
'permission_callback' => '__return_true',
]);
});
function myapp_get_featured($request) {
$count = $request->get_param('count') ?: 3;
$query = new WP_Query([
'posts_per_page' => intval($count),
'meta_key' => 'is_featured',
'meta_value' => '1',
]);
$result = [];
foreach ($query->posts as $post) {
$result[] = [
'id' => $post->ID,
'title' => get_the_title($post),
'link' => get_permalink($post),
];
}
return new WP_REST_Response($result, 200);
}
Bu yerda permission_callback juda muhim element bo'lib, u kim endpointga kira olishini belgilaydi. Ochiq ma'lumot uchun __return_true ishlatiladi, ammo himoyalangan ma'lumot uchun unda foydalanuvchi huquqlarini tekshiruvchi mantiq yozishingiz shart. Aks holda maxsus endpointingiz xavfsizlik teshigiga aylanib qolishi mumkin.
Xavfsizlik va eng yaxshi amaliyotlar
REST API saytni tashqi dunyoga ochib bergani uchun xavfsizlikka alohida e'tibor talab qiladi. Birinchi va eng asosiy qoida โ barcha so'rovlar HTTPS orqali yuborilishi kerak, chunki application password yoki JWT token ochiq HTTP ustidan yuborilsa, uni oson ushlab olish mumkin. Bundan tashqari, yozish va o'chirish endpointlarida har doim foydalanuvchi rolini va huquqini tekshirib, faqat ruxsat etilgan amallarga yo'l qo'ying.
Yana bir muhim jihat โ so'rovlar sonini cheklash (rate limiting), bu esa avtomatlashtirilgan hujumlar va serverni ortiqcha yuklashning oldini oladi. Agar saytingizga REST API kerak bo'lmasa yoki faqat ma'lum endpointlar ishlatilsa, qolganlarini o'chirib qo'yish hujum yuzasini kamaytiradi. Foydalanuvchilar ro'yxatini ochuvchi /users endpointi ham ko'pincha cheklanadi, chunki u login nomlarini oshkor qilib, brute-force hujumlarini osonlashtirishi mumkin.
Qachon va qanday qo'llash kerak
WordPress REST API ayniqsa quyidagi vaziyatlarda kuchli yechim bo'ladi: bir xil kontentni bir vaqtning o'zida vebsayt, mobil ilova va boshqa platformalarga tarqatish kerak bo'lganda; tezkor React yoki Vue interfeys qurib, WordPress'ni faqat kontent ombori sifatida ishlatmoqchi bo'lganingizda; yoki WordPress ma'lumotlarini CRM, do'kon tizimi yoxud tahlil vositalari bilan integratsiya qilganda. Har bir holatda API sizga WordPress'ning tahrir qulayligini saqlab, frontendni to'liq nazorat qilish erkinligini beradi.
Agar siz hozir oddiy WordPress sayti yuritayotgan bo'lsangiz va kelajakda uni zamonaviy ilovaga aylantirmoqchi bo'lsangiz, REST API'ni o'rganish ajoyib investitsiya bo'ladi. Eng yaxshi yondashuv โ kichik bir maxsus endpoint yaratib ko'rish, undan ma'lumot olishni sinab ko'rish va asta-sekin headless arxitektura tomon harakat qilishdir. Bu sizning saytingizni nafaqat bugungi, balki ertangi ehtiyojlarga ham tayyor qilib qo'yadi.