WP Rest API не работает
WP 5.2.4
/wp-json/wp/v2/
Выдает ошибку 404.
Я обновил постоянные ссылки, имею рабочий .htaccess на Apache и не использую "простые постоянные ссылки", но это все равно не работает. Мой Apache и его конфигурация выглядят нормально, все работает кроме /wp-json
.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Как исправить эту раздражающую ошибку WP? Почему WordPress не улучшает это, когда люди сталкиваются с этим каждый день?
Мои маршруты WP выглядят так (сокращено):
array (
'^wc-auth/v([1]{1})/(.*)?' => 'index.php?wc-auth-version=$matches[1]&wc-auth-route=$matches[2]',
'^wc-api/v([1-3]{1})/?$' => 'index.php?wc-api-version=$matches[1]&wc-api-route=/',
'^wc-api/v([1-3]{1})(.*)?' => 'index.php?wc-api-version=$matches[1]&wc-api-route=$matches[2]',
'sitemap_index\\.xml$' => 'index.php?sitemap=1',
'([^/]+?)-sitemap([0-9]+)?\\.xml$' => 'index.php?sitemap=$matches[1]&sitemap_n=$matches[2]',
'([a-z]+)?-?sitemap\\.xsl$' => 'index.php?yoast-sitemap-xsl=$matches[1]',
'shop-4/?$' => 'index.php?post_type=product',
'shop-4/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=product&feed=$matches[1]',
'shop-4/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=product&feed=$matches[1]',
'shop-4/page/([0-9]{1,})/?$' => 'index.php?post_type=product&paged=$matches[1]',
'^wp-json/?$' => 'index.php?rest_route=/',
'^wp-json/(.*)?' => 'index.php?rest_route=/$matches[1]',
....
Как видно, правила wp-json должны работать, так как соответствуют URL типа:
/wp-json/wp/v2/posts/6307
Я проверил, какие REST маршруты доступны (используя плагин "Rest Manager", хороший и понятный):
/wp/v2/posts/
/wp/v2/posts/(?P<id>[\d]+)
Когда я открываю URL:
/index.php?rest_route=wp/v2/posts/6307
/index.php?rest_route=/wp/v2/posts/6307
/index.php?rest_route=wp/v2/posts/
/index.php?rest_route=/wp/v2/posts/
Я получаю для всех:
(404)
{"code":"rest_no_route","message":"Не найден маршрут, соответствующий URL и методу запроса","data":{"status":404}}
Говорят, что список конечных точек доступен через GET /wp-json/
, но эта страница также возвращает 404.
Поведение точно такое же для маршрутов, где я знаю, что используются GET методы:
404 /wp-json/wp/v2/block-renderer/woocommerce/

Сначала необходимо проверить, включен ли REST API в WordPress.
Лучший способ проверить — посетить этот URL: https://вашсайт.com/wp-json
.
Если вы видите JSON-ответ, значит, REST API включен.
Если отображается страница с ошибкой или происходит перенаправление на главную страницу, значит, REST API отключен. В этом случае его нужно сначала включить.
В таком случае необходимо включить Постоянные ссылки.
- Перейдите в админ-панель вашего сайта (Посетите
https://вашсайт.com/wp-json
) - Настройки > Постоянные ссылки (перейдите по
https://вашсайт.com/wp-admin/options-permalink.php
) - Убедитесь, что не выбрана опция "Обычные"
- Выберите "Название записи" (это лучший вариант)
- Нажмите "Сохранить изменения". Это перезапишет/восстановит ваш файл
.htaccess
