Estou executando um tema no WordPress. Neste tema, estou fazendo algumas chamadas AJAX, onde estou esperando alguma resposta. ( http://example.com/capis/v0/packages/ )
Para atender as chamadas http acima, estou usando o silex como servidor 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();
Estou usando o php para executar um servidor na porta 8080 que está servindo dados para chamadas ajax.
php -S localhost:8080 -t web web/index.php
Agora, desejo atender a essas chamadas do Ajax usando apenas o WordPress. Eu não quero executar um servidor php específico.
Respostas:
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
se essa ligação for feita para convidados e clientes (por exemplo, não ADMIN), você também precisará da linha.
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:
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 comowoocommerce.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:ou
HTH
fonte