워드 프레스로 실 렉스 또는 슬림 실행


10

WordPress에서 테마를 실행 중입니다. 이 주제에서는 응답을 기대하는 AJAX 호출을하고 있습니다. ( http://example.com/capis/v0/packages/ )

위의 http 호출을 제공하기 위해 silex를 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();

php를 사용하여 8080 포트에서 서버를 실행하여 ajax 호출에 데이터를 제공합니다.

php -S localhost:8080 -t web web/index.php

이제는 WordPress 만 사용하여 이러한 Ajax 호출을 처리하고 싶습니다. 특정 PHP 서버를 실행하고 싶지 않습니다.


더 많은 서버 측 질문처럼 보입니다. 로컬 WordPress 설치의 요청 만 허용하려면 서버를 구성해야한다고 가정합니다. :)
Kolya Korobochkin

8
Silex 대신 REST API 를 사용하는 것이 좋습니다 .
kraftner

@kraftner가 언급 한 REST API 외에도 Themosis 프레임 워크를 살펴볼 수도 있습니다 .
Fabian Marz

짧은 예제는 wordpress.stackexchange.com/questions/301493을 참조하십시오 . 저에게 developer.wordpress.org/rest-api/extending-the-rest-api/… 는 매우 유용했습니다.
Clemens Tolboom

WP-REST API를 사용하거나 wp_ajax 조치를 사용하여 사용자 정의 API를 작성할 수 있습니다. 공식 문서입니다
idpokute

답변:


1

Wordpress를 통해 수행 할 수없는 Silex 서버로 수행 할 수있는 작업은 거의 없지만 WP가 AJAX 호출에 응답하도록하려면 약간의 노력이 필요합니다.

첫 번째 단계는 AJAX를 통해 통화 할 수 있도록하는 것입니다. 이것은 functions.php 파일에 다음과 비슷한 줄을 추가해야합니다.

add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');

이 전화가 손님과 고객을 위해 이루어질 경우 (즉, ADMIN이 아님) 해당 회선도 필요합니다.

add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');

그것은 똑같은 일을하지만 더 포괄적입니다.

다음 단계는 ajax 호출을 작성하는 것입니다. 이러한 호출의 예를 제공하지 않으므로 $ wpdb 에 대한 문서를 보도록 조언하기 만하면 됩니다. WP에는 데이터베이스에서 정보를 검색하고 복잡한 쿼리에 대한 포괄적 인 호출 집합이 있으며 언제든지 $ wpdb-> query ()를 사용하면 임의 SQL을 실행할 수 있습니다.

AJAX 로직은 my_ajax_call () 함수에 들어가고 결과는 배열 또는 객체에 배치되어야합니다. 함수의 마지막 줄은 wp_send_json_success ($ return)를 호출해야합니다. 여기서 $ return은 반환 할 정보의 객체 / 배열입니다.

이 시스템을 사용하여 wp_admin 섹션에 페이지를 추가하여 상점 소유자가 WooCommerce 데이터에서 재입고를위한 구매 주문을 작성하고 변형을위한 사이드로드 갤러리를 만들 수있었습니다 (Woo는 상위 갤러리 만 허용 함).

다음은 간단한 예입니다.

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

그리고 자바 스크립트에서 더 많은 단계가 필요합니다. 우선, WP AJAX URL이 필요 /wp-admin/admin-ajax.php하지만 일반적으로 다소 다를 수 있습니다. Javascript에서 전역 ajaxurl로 제공되거나 종종 같은 다른 객체에 고정되어있을 수 있습니다 woocommerce.ajaxurl. 함수 및 AJAX 호출에 전달해야하는 다른 변수를 가리키는 조치 요소를 사용하여 Javascript 오브젝트를 구성해야합니다. 예를 들면 다음과 같습니다.

data = {'action':'my_ajax_call'}

또는

data = {'action':'my_ajax_call', 'todo':'getDate'}

(function($){
    $.ajax{
        url:ajaxurl,
        data: data,
        success: function(trn) {$('#data').html(trn.data)}
})(jQuery)

HTH


몇 가지 더 워드 프레스와 아약스 연구 나는 톰 McFarlin에 의해 생성 된 문서의 읽기를 가진 제안 할 수 있습니다, 그는 워드 프레스에 대한 v.knowledgable 그리고 [구체적으로 아약스에 좋은 게시물을 가지고 google.co.uk/...
virtualLast
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.