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 à
add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');
si cet appel sera fait pour les invités et les clients (c'est-à-dire pas ADMIN), vous aurez également besoin de la ligne.
add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');
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:
function my_ajax_call() {
$return['data'] = date('Y-m-d');
wp_send_json_success($return);
wp_die();
}
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 comme woocommerce.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:
data = {'action':'my_ajax_call'}
ou
data = {'action':'my_ajax_call', 'todo':'getDate'}
(function($){
$.ajax{
url:ajaxurl,
data: data,
success: function(trn) {$('#data').html(trn.data)}
})(jQuery)
HTH