J'utilise un thème sur WordPress. Dans ce thème, je fais des appels AJAX où j'attends une réponse. ( http://example.com/capis/v0/packages/ )
Pour servir les appels http ci-dessus, j'utilise silex comme serveur 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();
J'utilise php pour exécuter un serveur sur le port 8080 qui sert des données aux appels ajax.
php -S localhost:8080 -t web web/index.php
Maintenant, je veux servir ces appels Ajax en utilisant uniquement WordPress. Je ne veux pas exécuter de serveur php spécifique.
Réponses:
Il n'y a pas grand-chose que vous puissiez faire avec le serveur Silex qui ne peut pas être fait via Wordpress mais cela demande un peu d'effort pour que WP réponde aux appels AJAX.
La première étape consiste à rendre l'appel disponible via AJAX. Cela nécessite d'ajouter une ligne à votre fichier functions.php similaire à
si cet appel sera fait pour les invités et les clients (c'est-à-dire pas ADMIN), vous aurez également besoin de la ligne.
qui fait la même chose mais est plus inclusif.
L'étape suivante consiste à créer les appels ajax. Vous ne donnez pas d'exemple d'un tel appel, donc tout ce que je peux faire est de vous conseiller de consulter la documentation de $ wpdb . WP a un ensemble complet d'appels pour récupérer des informations de la base de données et pour les requêtes complexes, vous pouvez toujours utiliser $ wpdb-> query () qui exécutera du SQL arbitraire pour vous.
La logique AJAX va dans la fonction my_ajax_call () et le résultat doit être placé dans un tableau ou un objet. La dernière ligne de votre fonction doit être un appel à wp_send_json_success ($ return) où $ return est l'objet / tableau d'informations à renvoyer.
En utilisant ce système, j'ai pu ajouter des pages à la section wp_admin pour permettre aux propriétaires de magasins de créer des bons de commande pour le réapprovisionnement à partir des données WooCommerce et une galerie de chargement latéral pour les variantes (Woo n'autorise qu'une galerie pour le parent).
Voici un petit exemple:
Et puis dans le javascript, d'autres étapes sont nécessaires. D'une part, vous aurez besoin de l'URL WP AJAX qui est généralement
/wp-admin/admin-ajax.php
mais peut varier quelque peu. Il est souvent mis à la disposition de Javascript comme ajaxurl global ou peut être caché dans un autre objet commewoocommerce.ajaxurl
. Vous devrez construire un objet Javascript avec un élément d'action qui pointe vers votre fonction et toutes les autres variables que vous pourriez avoir besoin de passer à l'appel AJAX. Par exemple:ou
HTH
la source