Há pouco que você pode fazer com o servidor Silex que não pode ser feito através do Wordpress, mas é preciso um pouco de esforço para que o WP responda às chamadas AJAX.
O primeiro passo é disponibilizar a chamada pelo AJAX. Isso requer adicionar uma linha ao seu arquivo functions.php semelhante ao
add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');
se essa ligação for feita para convidados e clientes (por exemplo, não ADMIN), você também precisará da linha.
add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');
que faz a mesma coisa, mas é mais inclusivo.
O próximo passo é criar as chamadas ajax. Você não dá um exemplo dessa ligação, então tudo o que posso fazer é aconselhá-lo a procurar os documentos para $ wpdb . O WP possui um conjunto abrangente de chamadas para recuperar informações do banco de dados e para consultas complexas, você sempre pode usar $ wpdb-> query (), que executará SQL arbitrário para você.
A lógica do AJAX entra na função my_ajax_call () e o resultado deve ser colocado em uma matriz ou objeto. A linha final da sua função deve ser uma chamada para wp_send_json_success ($ return) em que $ return é o objeto / matriz de informações a serem retornadas.
Usando esse sistema, pude adicionar páginas à seção wp_admin para permitir que os lojistas construam pedidos de reposição para reposição de dados do WooCommerce e uma galeria de carregamento lateral para variações (o Woo permite apenas uma galeria para os pais).
Aqui está um exemplo rápido:
function my_ajax_call() {
$return['data'] = date('Y-m-d');
wp_send_json_success($return);
wp_die();
}
E então no javascript, são necessárias mais etapas. Por um lado, você precisará da URL WP AJAX, que geralmente é, /wp-admin/admin-ajax.php
mas pode variar um pouco. Muitas vezes, é disponibilizado ao Javascript como o ajaxurl global ou pode estar escondido em outro objeto como woocommerce.ajaxurl
. Você precisará construir um objeto Javascript com um elemento de ação que aponte para sua função e quaisquer outras variáveis que possam precisar passar para a chamada AJAX. Por exemplo:
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