Hay poco que pueda hacer con el servidor Silex que no se puede hacer a través de Wordpress, pero se necesita un poco de esfuerzo para que WP responda a las llamadas AJAX.
El primer paso es hacer que la llamada esté disponible a través de AJAX. Esto requiere agregar una línea a su archivo functions.php similar a
add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');
Si esta llamada se realizará para invitados y clientes (es decir, no para ADMIN), también necesitará la línea.
add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');
que hace lo mismo pero es más inclusivo.
El siguiente paso es crear las llamadas ajax. No da un ejemplo de tal llamada, así que todo lo que puedo hacer es aconsejarle que mire los documentos por $ wpdb . WP tiene un conjunto completo de llamadas para recuperar información de la base de datos y para consultas complejas, siempre puede usar $ wpdb-> query () que ejecutará SQL arbitrario para usted.
La lógica AJAX va en la función my_ajax_call () y el resultado debe colocarse en una matriz u objeto. La línea final de su función debe ser una llamada a wp_send_json_success ($ return) donde $ return es el objeto / conjunto de información que se devolverá.
Usando este sistema, he podido agregar páginas a la sección wp_admin para permitir a los dueños de tiendas crear órdenes de compra para reabastecerse de datos de WooCommerce y una galería de carga lateral para variaciones (Woo solo permite una galería para el padre).
Aquí hay un ejemplo rápido:
function my_ajax_call() {
$return['data'] = date('Y-m-d');
wp_send_json_success($return);
wp_die();
}
Y luego, en JavaScript, son necesarios más pasos. Por un lado, necesitará la URL WP AJAX, que generalmente es /wp-admin/admin-ajax.php
pero puede variar un poco. A menudo está disponible para Javascript como ajaxurl global o puede estar escondido en otro objeto como woocommerce.ajaxurl
. Deberá construir un objeto Javascript con un elemento de acción que apunte a su función y a cualquier otra variable que necesite pasar a la llamada AJAX. Por ejemplo:
data = {'action':'my_ajax_call'}
o
data = {'action':'my_ajax_call', 'todo':'getDate'}
(function($){
$.ajax{
url:ajaxurl,
data: data,
success: function(trn) {$('#data').html(trn.data)}
})(jQuery)
HTH