У меня есть сайт WordPress.org, который принимает пользовательский ввод, выполняет поиск в пользовательской базе данных и отображает результаты запроса. У меня это работает с использованием класса wpdb . Теперь я пытаюсь заставить это работать для приложения для Android.
Из того, что я понимаю, создание сервера RESTful является текущей «лучшей практикой» для такого рода вещей. Я посмотрел на некоторые плагины, которые могут помочь мне сделать это, и я столкнулся:
json-rest-api - мне кажется, что это раскрывает только основные функциональные возможности WordPress (т. е. посты, страницы, пользователи и т. д.), и я не вижу, как заставить это выполнять пользовательские запросы к таблицам, отличным от стандартных.
В этом посте говорится, что wp mvc делает именно то, что я хочу, за исключением того, что он не обновлялся более 2 лет, так что это вроде бы исключает.
Существует также Jetpack, но, как я видел, json-rest-api является обновленной версией этого, и он, похоже, дает только основные функции.
Есть ли способ заставить любой из этих плагинов работать для пользовательских конечных точек? Или есть другие плагины, которые я еще не нашел?
Если я не использую плагин, я думаю, что мне придется свернуть свой собственный. Я могу сделать это либо с нуля (используя wpdb
, msqli
или что-то), либо с помощью API, таких как Рестлер .
Если я сверну свой собственный, должен ли я создать шаблон в моей теме, есть ли там материал REST и назначить эту тему странице в панели инструментов? Или было бы лучше иметь другой сервер, работающий отдельно от WordPress для этого?
Насколько я вижу, это мои единственные варианты. Я хотел бы знать, каковы рекомендуемые лучшие практики для такого рода вещей. Мне трудно поверить, что никто другой не сделал этого. Есть ли варианты, которые я упустил?
Ответы:
TL; DR
Да, WordPress, безусловно, может выступать в качестве бэкенда для мобильного приложения. Да, страница может действовать как конечная точка / интерфейс отдыха. Нет, шаблон темы не подходит для логики. Напишите свой собственный плагин.
указатели
Я, например, есть. Больше чем единожды. И я почти уверен, что я не одинок. «Никто не писал об этом широко», вероятно, является более правильным понятием.
Я не знаю «Рестлера», и это все равно выходит за рамки этого стека.
Что касается «использования wpdb, msqli или чего-то»: вы наверняка будете использовать
wpdb
для сохранения (получения) данных в базе данных, но это не имеет отношения к логике конечной точки.Шаблон темы - это не то, что вы должны изучить. Темы предназначены для визуального представления. Конечная точка REST вообще не нуждается в визуальном представлении.
Вставьте конечную точку на страницу, которую вы хотите использовать для нее с помощью шорткода .
Сделайте так, чтобы обработчик шорткода / обратный вызов прослушивали HTTP POST или GET и вызывали сохранение данных или другие вторичные методы соответственно.
Имеет ли смысл использовать WordPress в качестве конечной точки / бэкэнда?
По-разному.
Если все, что вам нужно, это конечная точка для сохранения данных: Нет. Загрузка всего ядра только для того, чтобы сохранить несколько строк кода с помощью
wpdb
, не стоит.Если вам нужен бэкэнд, в который можно войти через веб-браузер, который может отображать табличные данные, предлагать способы изменения указанных данных, возможно, даже с несколькими уровнями доступа / ролями и правами пользователя, тогда да, это имеет смысл.
источник
wpdb
, не стоит».Плагин API Endpoints должен покрывать все ваши потребности, особенно если вы знакомы с MySQL. Вы бы сделали следующие шаги:
Создайте новый шаблон Twig, введите свой запрос MysQL для извлечения данных с вашего сайта WordPress и используйте синтаксис Twig для вывода данных в любом формате. Например, JSON.
Создайте новую конечную точку API, дайте ей имя и настройте ее для использования шаблона Twig, созданного на шаге 1.
После этого повторите шаги 1 и 2 для каждой конечной точки, которую вы хотите создать. Конечные точки API используют стандартную систему аутентификации WordPress, поэтому было бы лучше создать отдельного пользователя в вашем WordPress и использовать его имя пользователя / пароль для доступа к вашим конечным точкам API.
источник
Новая версия WP REST API находится в бета-версии, но содержит довольно хорошую документацию о том, как регистрировать пользовательские конечные точки REST. Также есть небольшая реклама о том, как это можно сделать в версии 1, которую я собираюсь опробовать, поскольку бета-версия не гарантированно будет стабильной или останется стабильной. Я предполагаю, что вы могли бы затем использовать wpdb из методов, которые вы регистрируете. На самом деле я просто использую материал ACF и помещаю его в объекты в моем php, чтобы создать хорошую, доступную для поиска / сортируемую индексную страницу с несколькими свойствами с помощью angularJS.
Сравнение между WWP REST API 1 и 2 из их документов
источник