Как получить пост по названию ЧПУ (slug) через REST API?

22 февр. 2017 г., 15:51:50
Просмотры: 51.1K
Голосов: 36

Это работает для моих страниц, но не для записей. Если я перехожу по адресу example.com/wp-json/wp/v2/pages?slug=page-name, страница корректно извлекается. Если я перехожу по адресу example.com/wp-json/wp/v2/posts?slug=post-name, запись таким же образом не извлекается. Может кто-нибудь подсказать, как получить запись по названию ЧПУ (slug)? У записи также есть категория, но я не знаю, необходимо ли это учитывать и как правильно добавить это в запрос. Вся документация, которую я нашел, ссылается на функцию [filter], которая больше не поддерживается.

3
Комментарии

Я передал http://sitename.com/wp-json/wp/v2/posts?slug=post-slug, это работает

Tamil Selvan C Tamil Selvan C
22 февр. 2017 г. 16:02:12

Попробуйте использовать slug записи вместо её названия

Tamil Selvan C Tamil Selvan C
22 февр. 2017 г. 16:02:48

Я обнаружил, что может быть проблема с плагином Paid Memberships Pro. Любые записи, которые считаются ограниченным контентом, не могут быть получены по их slug и возвращают пустой результат вместо сообщения "Страница ограничена, пожалуйста, авторизуйтесь."

Alex Alex
22 февр. 2017 г. 23:02:00
Все ответы на вопрос 2
1
69

Записи: sitename.com/wp-json/wp/v2/posts?slug=post-slug

Страницы: sitename.com/wp-json/wp/v2/pages?slug=page-slug

Произвольный тип записи: sitename.com/wp-json/wp/v2/POST_TYPE?slug=post-slug

29 окт. 2017 г. 11:29:30
Комментарии

спасибо!!!....

Daniel M Sánchez Daniel M Sánchez
22 авг. 2019 г. 19:36:36
0

Вместо жесткого прописывания корня API безопаснее получить его следующим образом:

$api_root = trailingslashit( get_home_url() ) . rest_get_url_prefix();

а затем

Записи: $api_root . '/wp/v2/posts?slug={slug}';

Страницы: $api_root . '/wp/v2/pages?slug={slug}';

Произвольный тип записи: $api_root . '/wp/v2/{post_type}?slug={slug}';

Ссылка

https://developer.wordpress.org/reference/functions/rest_get_url_prefix/

15 окт. 2023 г. 07:15:24