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.
Jawaban:
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
jika panggilan ini akan dibuat untuk tamu dan pelanggan (yaitu bukan ADMIN), Anda juga akan memerlukan saluran.
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:
Dan kemudian di javascript, lebih banyak langkah diperlukan. Untuk satu hal, Anda memerlukan URL WP AJAX yang biasanya
/wp-admin/admin-ajax.php
tetapi bisa agak berbeda. Ini sering dibuat tersedia untuk Javascript sebagai ajaxurl global atau mungkin tersimpan di objek lain sepertiwoocommerce.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:atau
HTH
sumber