executar silex ou slim com wordpress

10

Estou executando um tema no WordPress. Neste tema, estou fazendo algumas chamadas AJAX onde estou esperando alguma resposta. ( enlace )

Para atender 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 quero atender a essas chamadas do Ajax usando apenas o WordPress. Eu não quero correr servidor php específico.

    
por Prashant Gaur 26.08.2016 / 15:59

1 resposta

0

Há pouco que você pode fazer com o servidor do 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 do AJAX.

O primeiro passo é disponibilizar a chamada por meio do AJAX. Isto requer adicionar uma linha ao seu arquivo functions.php similar a

add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');

Se essa chamada for feita para convidados e clientes (ou seja, 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 de tal chamada, então tudo que posso fazer é aconselhá-lo a olhar para os documentos para $ wpdb . O WP tem um conjunto abrangente de chamadas para recuperar informações do banco de dados e para consultas complexas, você sempre pode usar o $ 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 de sua função deve ser uma chamada para wp_send_json_success ($ return), onde $ return é o objeto / array de informações a serem retornadas.

Usando este sistema, eu pude adicionar páginas à seção wp_admin para permitir que os donos de lojas construíssem pedidos de reabastecimento a partir de dados do WooCommerce e uma galeria de side-load para variações (o Woo só permite uma galeria para o pai) .

Aqui está um exemplo rápido:

function my_ajax_call() {
    $return['data'] = date('Y-m-d');
    wp_send_json_success($return);
    wp_die();
}

E, em seguida, no javascript, são necessárias mais etapas. Por um lado, você precisará do URL do WP AJAX, que geralmente é /wp-admin/admin-ajax.php , mas pode variar um pouco. Muitas vezes é disponibilizado para 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 você precise 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

    
por Mark Cicchetti 27.08.2018 / 07:37