Je suis pratique pour créer un plugin ajax wordpress simple. J'ai référencé la documentation wordress ajax et quelques tutoriels pour créer un plugin. Comment puis-je passer les valeurs pour obtenir le résultat du fichier php. Le même code que j'ai créé en php normal cela fonctionne très bien. Comment puis-je résoudre ça. Voici les codes que j'ai créés.
index.php
<?php
/*
Plugin Name: Ajax Serach
*/
function my_assets() {
wp_enqueue_style( 'pubmed-style', plugin_dir_url( __FILE__ ).'css/pubmed-style.css' );
wp_enqueue_script( 'pubmed-script', plugin_dir_url( __FILE__ ).'js/pubmed-script.js', array('jquery'), true );
wp_localize_script( pubmed-script, litsearch, array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));
}
add_action( 'wp_enqueue_scripts', 'my_assets' );
?>
<?php
function pubget(){
?>
<input type="text" name="" value="" id="sterm"/>
<input type="button" name="" value="Search term" id="pub_search"/>
<div id="container">olddata</div>
<?php
}
add_shortcode('pubajax', 'pubget');
?>
Test.php
<?php
class Testclass{
function infotext(){
$txt = 'This is a ajax response text';
}
}
?>
Pub.php
<?php
function litsearch(){
$newterm = $_GET['nwterm'];
$newtest = new Testclass();
if($newterm == $_GET['nwterm']){
include('test.php');
$newtest = new Testclass();
$newtest->infotext();
}
die();
}
add_action('wp_ajax_litsearch', 'litsearch');
add_action('wp_ajax_nopriv_litsearch', 'litsearch');
?>
mainjquery.js
jQuery( document ).ready(function(){
//alert("Jquery Loaded");
jQuery("#pub_search").click(function(){
alert("You clicked");
event.preventDefault();
var term= $("#sterm").val();
console.log('your term send: '+term);
var data = {'nwterm': term }
$.get(litsearch.ajaxurl, data, function(data){
$("#container").html(data);
});
});
});
Vous devez mettre le nom de votre action wp ajax dans vos données lorsque vous effectuez l'appel ajax.
Je suppose que l'URL ajax est correct.
jQuery( document ).ready(function(){
//alert("Jquery Loaded");
jQuery("#pub_search").click(function(){
alert("You clicked");
event.preventDefault();
var term= $("#sterm").val();
console.log('your term send: '+term);
var data = {'nwterm': term, 'action': 'litsearch'}
$.get(litsearch.ajaxurl, data, function(data){
$("#container").html(data.response);
});
});
});
Aussi, parce que vous voulez mettre une réponse dans votre code html, vous devez renvoyer quelque chose du serveur.
Test.php
<?php
class Testclass{
function infotext(){
$txt = 'This is a ajax response text';
return $txt;
}
}
?>
Pub.php
<?php
function litsearch(){
$newterm = $_GET['nwterm'];
$newtest = new Testclass();
$data = array();
if($newterm == $_GET['nwterm']){
include('test.php');
$newtest = new Testclass();
$data['response'] = $newtest->infotext();
}
wp_send_json( $data );
}
add_action('wp_ajax_litsearch', 'litsearch');
add_action('wp_ajax_nopriv_litsearch', 'litsearch');
?>