#json #wordpress #api #link
Нужно как-то сделать в плагине, чтобы при переходе по ссылке определенного типа отдавался JSON где token - это код сгенерированный за алгоритмом текущего дня (этот код знает сервер и отправитель) method - это указатель метода для плагина Ссылка должна получится вида http://domain.ru/wp-api/token/method?postdata=data Я нашел частичный ответ тут Но как читается эта штука, что это такое, и как ее доработать под меня. add_rewrite_rule('^wp-api/pugs/?([0-9]+)?/?','index.php?__wp-api=1&pugs=$matches[1]','top'); Готов все попробовать сделать сам, но просто объясните как сделать точку входа и чтоб она работала.
Ответы
Ответ 1
Если я верно угадал в комментарии к вашему ответу, что вы на самом деле хотите сделать, то есть два варианта решения данной задачи. Первый - разрабатывать действительно свой API, как советуют по вашей ссылке, то есть точку входа для внешних источников запроса. Но это довольно громоздкий вариант, который вряд ли вам нужен. Второй - просто принимать некоторые запросы и в ответ на них слать некий ответ. В предыдущем ответе другим пользователем вам был дан в целом рабочий для такого решения совет, но, как по мне, более правильно будет поступить описанным ниже образом. Главным образом потому, что конкретно для асинхронных запросов именно от плагинов, а у вас наверняка такая задача и стоит, именно описанный ниже функционал и подходит (он находится в разделе Plugin API), в то время как предложенный другим пользователем вариант - это использование функционала редиректов, что совершенно неверно методологически. Функционал этот завязан на такой хук: wp_ajax_(action) / wp_ajax_nopriv_(action). Если коротко, то он работает "из коробки" для запросов, сформированных из админки, и с небольшим применением магии работает и для фронта сайта. Подробное описание, как это сделать, есть тут. Ключевых моментов тут три: Написать функцию, которая будет делать POST-запрос на адрес admin-ajax.php (адрес будет использоваться в т.ч. и для фронта). Написать колбек, который будет использоваться для ловли вашего запроса и ответа на него, который, в свою очередь, повесить на этот запрос с помощью упомянутого хука wp_ajax_(my_action) (часть в скобках меняется на ваше название). Если запрос нужно делать не только из админки, то повесить тот же колбек с помощью хука wp_ajax_nopriv_(action). Добавить на фронт js-объект myajax (название произвольно), в котором будете хранить адрес вашего эндпоинта, название запроса, ключ для проверки запроса на принадлежность к вашему сайту (wp_nonce, токен, но это не про ваш токен, а про токен конкретно для этого функционала) и другие нужные вам на фронте переменные.Ответ 2
Посмотрите в сторону endpoint'ов в WordPress. Добавьте свой endpoint, например json. И через хук add_action( 'template_redirect', 'function' ); разбирайте полученный результат. get( 'json' ); if ( ! $json ) { return; } // Код для получения JSON // ..................... wp_send_json( $json ); } add_action( 'template_redirect', 'mihdan_template_redirect' ); ?>
Комментариев нет:
Отправить комментарий