jalankan silex atau slim dengan wordpress


10

Saya menjalankan tema di WordPress. Dalam tema ini, saya membuat beberapa panggilan AJAX di mana saya mengharapkan tanggapan. ( http://example.com/capis/v0/packages/ )

Untuk melayani panggilan http di atas, saya menggunakan silex sebagai server 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();

Saya menggunakan php untuk menjalankan server pada port 8080 yang melayani data untuk panggilan ajax.

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

Sekarang saya ingin melayani panggilan Ajax ini dari hanya menggunakan WordPress. Saya tidak ingin menjalankan server php tertentu.


Sepertinya lebih banyak pertanyaan di sisi server. Jika Anda hanya ingin mengizinkan permintaan dari instalasi WordPress lokal Anda, saya kira Anda perlu mengkonfigurasi server Anda :)
Kolya Korobochkin

8
Saya akan sangat merekomendasikan menggunakan REST API, bukan Silex.
kraftner

Selain REST API yang disebutkan oleh @kraftner, Anda juga dapat melihat kerangka Themosis .
Fabian Marz


Anda bisa menggunakan WP-REST API atau Anda bisa membuat API khusus menggunakan aksi wp_ajax. di sini adalah dokumen resmi
idpokute

Jawaban:


1

Ada sedikit yang dapat Anda lakukan dengan server Silex yang tidak dapat dilakukan melalui Wordpress tetapi butuh sedikit usaha untuk mendapatkan WP untuk menanggapi panggilan AJAX.

Langkah pertama adalah membuat panggilan tersedia melalui AJAX. Ini membutuhkan penambahan baris ke file functions.php Anda mirip dengan

add_action('wp_ajax_my_ajax_call', 'onno_update_my_ajax_call');

jika panggilan ini akan dibuat untuk tamu dan pelanggan (yaitu bukan ADMIN), Anda juga akan memerlukan saluran.

add_action('wp_ajax_nopriv_my_ajax_call', 'my_ajax_call');

yang melakukan hal yang sama tetapi lebih inklusif.

Langkah selanjutnya adalah membuat panggilan ajax. Anda tidak memberikan contoh panggilan seperti itu sehingga yang bisa saya lakukan adalah menyarankan Anda untuk melihat dokumen $ wpdb . WP memiliki serangkaian panggilan komprehensif untuk mengambil info dari database dan untuk pertanyaan kompleks, Anda selalu dapat menggunakan $ wpdb-> query () yang akan menjalankan SQL arbitrer untuk Anda.

Logika AJAX masuk dalam fungsi my_ajax_call () dan hasilnya harus ditempatkan ke dalam array atau objek. Baris terakhir dari fungsi Anda harus menjadi panggilan ke wp_send_json_success ($ return) di mana $ return adalah objek / array informasi yang akan dikembalikan.

Dengan menggunakan sistem ini, saya dapat menambahkan halaman ke bagian wp_admin untuk memungkinkan pemilik toko membuat pesanan pembelian untuk mengisi ulang dari data WooCommerce dan galeri beban samping untuk variasi (Woo hanya mengizinkan galeri untuk orang tua).

Ini contoh singkatnya:

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

Dan kemudian di javascript, lebih banyak langkah diperlukan. Untuk satu hal, Anda memerlukan URL WP AJAX yang biasanya /wp-admin/admin-ajax.phptetapi bisa agak berbeda. Ini sering dibuat tersedia untuk Javascript sebagai ajaxurl global atau mungkin tersimpan di objek lain seperti woocommerce.ajaxurl. Anda harus membuat objek Javascript dengan elemen tindakan yang menunjuk ke fungsi Anda dan variabel lain yang mungkin perlu Anda lewati untuk panggilan AJAX. Sebagai contoh:

data = {'action':'my_ajax_call'}

atau

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

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

HTH


Untuk beberapa penelitian wordpress dan ajax lebih lanjut dapat saya sarankan membaca artikel-artikel yang dibuat oleh Tom McFarlin, dia v. Diakui tentang wordpress dan memiliki beberapa posting bagus di ajax khusus [ google.co.uk/…
virtualLast
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.