Чи встановлений та включений API Wordpress REST у ванільній програмі Wordpress 4.7?


29

Я щойно встановив Wordpress 4.7. Однією з згадок у оголошенні є те, що він містить API REST.

Я розумію:

  • Плагін Wordpress REST API більше не потрібен, тому що, мабуть, він уже об'єднаний з ядром у Wordpress 4.7.
  • API Wordpress REST увімкнено за замовчуванням

Однак я помічаю, що у встановленні Wordpress 4.7 ванілі ні одна з кінцевих точок, здається, не працює (наприклад http://examples.com/wp-json/wp/v2/posts).

Як я можу дізнатися, чи дійсно новий REST API активований? Чи можна включити або вимкнути API REST за допомогою ванільного інтерфейсу Wordpress або потрібно встановити плагін третьої сторони для цього?


1
Чи є тег відкриття у джерелі сторінки? <link rel='https://api.w.org/' href='https://example.com/wp-json/' />Здається, просто працює на моїх сайтах.
Рарст

@Rarst, якщо я grep -r "<link rel='https://api.w.org/'" .в htmlкаталозі, він повертає один удар в файл ./wp-includes/rest-api.phpз цим текстом:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
Pep

Не у вашому вихідному коді, у вихідному HTML-коді сторінки вашого веб-сайту в браузері.
Рарст

1
@Rarst, так, я бачу<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Pep

Що відкриває посилання у браузері? Якщо WP_DEBUG увімкнено?
Рарст

Відповіді:


21

4.7 це включено за замовчуванням. Простий спосіб перевірити, чи працює він - це просто відвідати example.com/wp-json URL, і ви маєте отримати список зареєстрованих кінцевих точок там

Офіційного варіанту його відключення немає (принаймні, про це говорили не впевнені, чи потрапив він у релізі), від цього залежить деяка основна функціональність.

Найбільш очевидні речі, на які слід перевірити, чи не працює, це ваші правила htaccess, і чи є у вас каталог wp-json


У мене немає каталогу wp-json під /var/www/htmlйого підкаталогами. Я , здається, не мають .htaccessфайлу (крім /var/www/html/wp-content/plugins/akismet/.htaccess, я повинен був один?
Пеп

@Pep, яким веб-сервером ви користуєтесь? у вас досить постійних посилань?
Марк Каплун

Апач. Я точно дотримувався кроків у цих підручниках, щоб встановити Wordpress 4.7 на AWS: docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html та docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Пеп

не знайомий з AWS, але якщо ви встановили ванільний wordpress, у вас повинен був бути .htaccess в корені вашої установки. Якщо ви не намагаєтеся перейти до налаштування> постійна посилання, переконайтеся, що ви не на простому налаштуванні, збережіть і перевірте, чи генерувався htaccess
Марк Каплун

6
Я знайшов нарешті питання. Оскільки я не знав, що для роботи REST API потрібно буде Permalink, я пропустив під час початкового налаштування крок, встановлений AllowOverride Allу <Directory "/var/www/html">розділі /etc/httpd/conf/httpd.conf. Тому він ігнорував мої зміни до .htaccess. Тепер з постійною посиланням, крім PLain, кінцеві точки API REST працюють.
Пеп

11

У мене 4,7 теж думав, що REST API відключений, але мене обдурила URL. Щоб побачити правильну URL-адресу, шукайте рядок, який виглядає приблизно так:

link rel = ' https://api.w.org/' href = ' http://mysite?rest_route=/' />. Отже, використовуючи http: // mysite? Rest_route = / як префікс вирішив мою проблему. Наприклад, для відновлення публікацій слід набрати: http: // mysite? Rest_route = / wp / json

Я не зміг знайти в документації, що потрібен параметр запиту. Я був єдиним?


Працював для мене з wordpress 4.8.x Не впевнений, чому це ніде не зафіксовано.
Аніруда

2
Не єдиний. Ви знайшли цю відповідь у вашому коментарі лише через 10 хвилин пошуку. Потрібно зробити:www.example.com?rest_route=/wp/v2/posts
Євген К.

3
Я думаю, що це відбувається, коли досить постійні посилання не ввімкнуті. З документів ... "На сайтах без досить постійних посилань маршрут замість цього додається до URL як параметр rest_route. Для наведеного вище прикладу повна URL-адреса буде example.com/?rest_route=/wp/v2/posts / 123 "
Джайлс Батлер


1

Я бачу, ви вирішили цю проблему, але залишили моє рішення тут, як воно працювало і для мене. У мене була ця сама проблема під час оновлення з beta15 до ядра api в wp 4.7 Виявилося, що у мене були деякі плагіни, які використовували застарілу функцію register_api_field, яку я змінив на register_rest_field відповідно до цієї примітки в журналі змін:

BREAKING CHANGE: Перейменуйте register_api_field () на register_rest_field ().

Вводить функцію register_api_field () для зворотного компату, яка викликає _doing_it_wrong (). Однак register_api_field () ніколи не буде привласнений до ядра WordPress, тому слід оновити функціональні виклики.


1

Якщо API REST не працює в режимі нестабільності або після нової установки та після введення

mydomain/wp-json/wp/v2/posts 

тоді вам потрібно буде просто активувати ваші "постійні посилання", як розміщене ім'я_постою:

Панель керування WP-> Налаштування-> Постійні посилання

Або якщо ви не бажаєте активувати постійні посилання, ви можете просто ввести:

mydomain?rest_route=/wp/v2/posts

Людина, я хотів би, щоб WordPress оновив свій посібник з відпочинком, щоб він був більш зручним для користувачів. Мені подобається стара версія документів :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.