🔌
Веб-сайт

WordPress REST API: WordPress'ни бэкенд сифатида ишлатиш

31.03.2026
← Барча мақолалар

WordPress'ни кўпчилик фақат оддий блог ёки сайт платформаси деб билади, лекин унинг ичида жуда кучли восита яширинган — REST API. Бу интерфейс WordPress сақлаган барча маълумотларни (постлар, саҳифалар, фойдаланувчилар, таксономиялар, изоҳлар) стандарт JSON форматида ташқи дастурларга очиб беради. Натижада WordPress энди шунчаки саҳифа чизадиган тизим эмас, балки тўлақонли контент бэкендига айланади, яъни фронтенд қисмини исталган технологияда қуриб, ундан фақат маълумот манбаси сифатида фойдаланишингиз мумкин.

Бу ғоя замонавий веб-дастурлашда «headless WordPress» деб аталади. Бунда WordPress админ панели контент бошқаруви учун қолади, аммо фойдаланувчига кўринадиган интерфейс React, Vue, Next.js ёки мобил илова кўринишида алоҳида қурилади. Бундай ажратиш сайтни тезроқ, хавфсизроқ ва мослашувчанроқ қилади, чунки фронтенд ва бэкенд бир-бирига боғлиқ бўлмаган ҳолда ривожлантирилади. Агар сиз дастурчи бўлсангиз, REST API сизга WordPress экотизимининг барча қулайликларини сақлаб қолган ҳолда замонавий интерфейслар қуриш имконини беради.

REST API қандай ишлайди ва асосий эндпоинтлар

WordPress REST API барча сўровларни /wp-json/ манзили остида қабул қилади. Асосий ядро эндпоинтлари wp/v2 номли версияланган бўшлиқда жойлашган, бу келажакда API ўзгарса ҳам эски интеграциялар бузилмаслигини таъминлайди. Энг кўп ишлатиладиган манзиллар — постлар, саҳифалар, фойдаланувчилар ва категорияларни қайтарувчи эндпоинтлар бўлиб, уларнинг ҳар бири стандарт HTTP усуллари орқали бошқарилади.

GET  /wp-json/wp/v2/posts          # барча постлар рўйхати
GET  /wp-json/wp/v2/posts/42       # ID 42 бўлган пост
GET  /wp-json/wp/v2/pages          # саҳифалар
GET  /wp-json/wp/v2/users          # фойдаланувчилар
GET  /wp-json/wp/v2/categories     # категориялар

# Филтрлаш ва саҳифалаш параметрлари
GET  /wp-json/wp/v2/posts?per_page=5&page=2&search=domen&orderby=date

Ҳар бир жавоб JSON массив ёки объект кўринишида қайтади ва унда постнинг сарлавҳаси, контенти, санаси, муаллифи ҳамда бошқа метамаълумотлар бўлади. Браузерда оддийгина https://saytingiz.uz/wp-json/wp/v2/posts манзилини очиб, бу маълумотларни дарҳол кўришингиз мумкин — ҳеч қандай плагин ўрнатиш шарт эмас, чунки REST API WordPress ядросига киритилган.

Маълумотларни ўқиш: GET сўровлари

Ўқиш операциялари одатда аутентификациясиз ишлайди, чунки нашр қилинган постлар ҳар қандай ташрифчи учун очиқ. JavaScript ёрдамида замонавий фронтендда маълумот олиш қуйидагича амалга оширилади. Бу мисол охирги бешта постни олиб, уларнинг сарлавҳаларини экранга чиқаради ва айнан шу ёндашув React ёки Vue иловасининг асосини ташкил этади.

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 параметри алоҳида аҳамиятга эга, чунки у жавобга муаллиф маълумотлари ва асосий расм (featured image) каби боғлиқ объектларни қўшади. Бусиз ҳар бир расм ёки муаллиф учун алоҳида сўров юборишга тўғри келарди, бу эса иловани секинлаштирарди. Демак, битта оптимал сўров билан бутун постни тўлиқ кўрсатиш учун зарур барча маълумотни олишингиз мумкин.

Аутентификация: application passwords ва JWT

Маълумот ёзиш, таҳрирлаш ёки ўчириш учун эса албатта аутентификация керак бўлади, акс ҳолда исталган киши сайтингиз контентини ўзгартира олар эди. WordPress 5.6 версиясидан бошлаб ядрода Application Passwords механизми мавжуд бўлиб, у асосий паролни ошкор қилмасдан API учун алоҳида махфий калит яратиш имконини беради. Бу калит фойдаланувчи профилидан генерация қилинади ва ҳар қандай вақтда бекор қилиниши мумкин.

# Application password билан пост яратиш (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"
  }'

Мураккаброқ лойиҳаларда, айниқса мобил иловаларда, JWT (JSON Web Token) усули кўпроқ қўл келади. Бунда фойдаланувчи бир марта логин ва парол билан токен олади, кейин эса ҳар бир сўровда шу токенни Authorization: Bearer сарлавҳаси орқали юборади. JWT ёндашуви махсус плагин орқали ўрнатилади ва у stateless, яъни сервер томонда сессия сақлашни талаб қилмайди, шунинг учун катта юкламали иловаларда яхши масштабланади.

Махсус эндпоинт яратиш

Стандарт эндпоинтлар барча эҳтиёжларни қопламаслиги мумкин, масалан, сиз бир нечта жадвалдан маълумотни бирлаштирадиган ёки махсус мантиқ талаб қиладиган жавоб хоҳлашингиз мумкин. Бундай ҳолатда WordPress'нинг register_rest_route функцияси ёрдамида ўзингизнинг эндпоинтингизни яратасиз. Қуйидаги код мавзу файлига ёки плагинга қўшилиб, янги /wp-json/myapp/v1/featured манзилини ҳосил қилади.

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);
}

Бу ерда permission_callback жуда муҳим элемент бўлиб, у ким эндпоинтга кира олишини белгилайди. Очиқ маълумот учун __return_true ишлатилади, аммо ҳимояланган маълумот учун унда фойдаланувчи ҳуқуқларини текширувчи мантиқ ёзишингиз шарт. Акс ҳолда махсус эндпоинтингиз хавфсизлик тешигига айланиб қолиши мумкин.

Хавфсизлик ва энг яхши амалиётлар

REST API сайтни ташқи дунёга очиб бергани учун хавфсизликка алоҳида эътибор талаб қилади. Биринчи ва энг асосий қоида — барча сўровлар HTTPS орқали юборилиши керак, чунки application password ёки JWT токен очиқ HTTP устидан юборилса, уни осон ушлаб олиш мумкин. Бундан ташқари, ёзиш ва ўчириш эндпоинтларида ҳар доим фойдаланувчи ролини ва ҳуқуқини текшириб, фақат рухсат этилган амалларга йўл қўйинг.

Яна бир муҳим жиҳат — сўровлар сонини чеклаш (rate limiting), бу эса автоматлаштирилган ҳужумлар ва серверни ортиқча юклашнинг олдини олади. Агар сайтингизга REST API керак бўлмаса ёки фақат маълум эндпоинтлар ишлатилса, қолганларини ўчириб қўйиш ҳужум юзасини камайтиради. Фойдаланувчилар рўйхатини очувчи /users эндпоинти ҳам кўпинча чекланади, чунки у логин номларини ошкор қилиб, brute-force ҳужумларини осонлаштириши мумкин.

Қачон ва қандай қўллаш керак

WordPress REST API айниқса қуйидаги вазиятларда кучли ечим бўлади: бир хил контентни бир вақтнинг ўзида вебсайт, мобил илова ва бошқа платформаларга тарқатиш керак бўлганда; тезкор React ёки Vue интерфейс қуриб, WordPress'ни фақат контент омбори сифатида ишлатмоқчи бўлганингизда; ёки WordPress маълумотларини CRM, дўкон тизими ёхуд таҳлил воситалари билан интеграция қилганда. Ҳар бир ҳолатда API сизга WordPress'нинг таҳрир қулайлигини сақлаб, фронтендни тўлиқ назорат қилиш эркинлигини беради.

Агар сиз ҳозир оддий WordPress сайти юритаётган бўлсангиз ва келажакда уни замонавий иловага айлантирмоқчи бўлсангиз, REST API'ни ўрганиш ажойиб инвестиция бўлади. Энг яхши ёндашув — кичик бир махсус эндпоинт яратиб кўриш, ундан маълумот олишни синаб кўриш ва аста-секин headless архитектура томон ҳаракат қилишдир. Бу сизнинг сайтингизни нафақат бугунги, балки эртанги эҳтиёжларга ҳам тайёр қилиб қўяди.

Ўхшаш мақолалар

🌾 Қишлоқ хўжалиги ва агро сайти: маҳсулотлар каталоги ❤️ Хайрия фонди сайти: шаффоф ва ишонч 🎉 Тўйxона ва банкет зали сайти: бирон қилиш 🚙 Автомобил ижара сайти: каталог ва бирон
🌐 Тил
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English