Я запускаю тему на WordPress. В этой теме я делаю несколько звонков AJAX, где ожидаю ответа. ( http://example.com/capis/v0/packages/ )
Для обслуживания вышеупомянутых http-звонков я использую Silex в качестве http-сервера.
index.php
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Silex\Application;
$app = new Silex\Application();
$app->POST('/capis/v0/packages/', function(Application $app, Request $request) {
# logic
return new Response('HELLO');
});
$app->run();
Я использую php для запуска сервера на порту 8080, который обслуживает данные для вызовов ajax.
php -S localhost:8080 -t web web/index.php
Теперь я хочу обслуживать эти вызовы Ajax, используя только WordPress. Я не хочу запускать конкретный php сервер.
Ответы:
С сервером Silex мало что можно сделать с помощью Wordpress, но требуется немного усилий, чтобы заставить WP отвечать на вызовы AJAX.
Первый шаг - сделать звонок доступным через AJAX. Это требует добавления строки в ваш файл functions.php, аналогичный
если этот звонок будет сделан для гостей и клиентов (т.е. не ADMIN), вам также понадобится линия.
которая делает то же самое, но более инклюзивна.
Следующим шагом является создание вызовов ajax. Вы не приводите пример такого вызова, поэтому все, что я могу сделать, это посоветовать вам посмотреть документы на $ wpdb . WP имеет полный набор вызовов для извлечения информации из базы данных и для сложных запросов, вы всегда можете использовать $ wpdb-> query (), который будет запускать произвольный SQL для вас.
Логика AJAX входит в функцию my_ajax_call (), и результат должен быть помещен в массив или объект. Последней строкой вашей функции должен быть вызов wp_send_json_success ($ return), где $ return - это объект / массив информации, которую нужно вернуть.
Используя эту систему, я смог добавить страницы в раздел wp_admin, чтобы владельцы магазинов могли создавать заказы на покупку для пополнения запасов на основе данных WooCommerce и галереи боковой загрузки для вариантов (Woo допускает только галерею для родителя).
Вот быстрый пример:
А затем в JavaScript, больше шагов необходимо. Во-первых, вам понадобится URL-адрес WP AJAX, который обычно,
/wp-admin/admin-ajax.php
но может несколько отличаться. Он часто делается доступным для Javascript как глобальный ajaxurl или может быть спрятан в другом объекте, напримерwoocommerce.ajaxurl
. Вам нужно будет создать объект Javascript с элементом action, который указывает на вашу функцию и любые другие переменные, которые вам может понадобиться передать в вызов AJAX. Например:или
НТН
источник