Come chiamare Ajax in un file di plugin WordPress

19 lug 2014, 08:29:51
Visualizzazioni: 13.5K
Voti: 0

Sono molto nuovo all'uso di Ajax con WordPress. Qui sto ottenendo il valore di un'opzione selezionata in var test utilizzando la funzione qui sotto. Quando faccio alert, mi mostra il valore corretto.

Questo valore di var test devo inviarlo usando Ajax e voglio riceverlo in una variabile PHP.

Quindi cosa mi serve per chiamare Ajax e ottenere il valore della variabile script var test in PHP nel file del plugin dove ho sia la funzione che la select box.

Funzione jQuery.

jQuery("#time_slot").change(function()
{

var test= time_slot.value;
alert(test);

});

Select Box

<select name="time_slot" id="time_slot" class="time_slot">
<option value="">Scegli un orario</option>
<option value="1:00 - 3:00">01:00 AM-03:00 AM</option>
<option value="3:00 - 5:00">03:00 AM-05:00 AM</option>
</select>
0
Tutte le risposte alla domanda 5
1

Utilizza le azioni Ajax integrate in WordPress:

Il tuo codice jQuery avrà questo aspetto:

$('#ajax_form').bind('submit', function() {
    var form = $('#ajax_form');
    var data = form.serialize();
    data.action = 'MyPlugin_GetVars'
    $.post('/wp-admin/admin-ajax.php', data, function(response) {
        alert(response);           
    });
return false; 

Il codice del tuo plugin sarà simile a:

add_action("wp_ajax_MyPlugin_GetVars", "MyPlugin_GetVars");
add_action("wp_ajax_nopriv_MyPlugin_GetVars", "MyPlugin_GetVars");

function MyPlugin_GetVars(){
    global $wpdb;
    // utilizza $wpdb per le tue operazioni di inserimento

    // Esegui qui le tue operazioni Ajax
    // Potresti fare include('/wp-content/plugins/test/getvars.php') ma sarebbe
    // meglio evitarlo e spostare il codice direttamente in questa funzione
}

Per maggiori informazioni visita AJAX nei Plugin

19 lug 2014 08:40:38
Commenti

puoi dirmi la struttura del file in base al codice della domanda

Sanjay Nakate Sanjay Nakate
19 lug 2014 08:59:35
14

per favore guarda qui sotto, potrebbe esserti utile. Ecco il tuo codice PHP.

<?php

function ajax_enqueuescripts() {
    wp_enqueue_script('ajaxloadpost', plugins_url().'/your-plugin-name/js/my-ajax.js', array('jquery'));
    wp_localize_script( 'ajaxloadpost', 'ajax_postajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}

add_action('wp_enqueue_scripts', ajax_enqueuescripts);

add_action('wp_ajax_nopriv_ajax_ajaxhandler', 'my_action_callback' );
add_action('wp_ajax_ajax_ajaxhandler', 'my_action_callback' );

function my_action_callback(){  
    print_r($_GET);
    die;
}

E qui c'è il tuo codice JS. Devi creare un nuovo file JS e inserire il codice qui sotto nel tuo nuovo file JS.

jQuery(document).ready(function(){
 jQuery("#time_slot").change(function()
{

    var test= time_slot.value;

jQuery.ajax({
        type: 'GET',
        url: ajax_postajax.ajaxurl,
        data: {
            action: 'ajax_ajaxhandler',
            test : test   
        },
        success: function(data) {
            alert(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("Errore");
        }
    });

    return false;
  });
});

Per maggiori dettagli, puoi controllare qui

19 lug 2014 08:53:58
Commenti

cosa fare con questo /your-plugin-name/js/my-ajax.js, puoi elaborarlo

Sanjay Nakate Sanjay Nakate
19 lug 2014 09:17:37

Devi inserire il tuo codice js in my-ajax.js (nome del file js). Quindi "/your-plugin-name/js/my-ajax.js" sarà il percorso del tuo file JS.

Jigar Gorakhiya Jigar Gorakhiya
19 lug 2014 09:37:22

booking.php è il nome del file dove sto ottenendo il valore Jqery che devo inviare nella chiamata ajax, quindi dove metterò questa funzione ajax_enqueuescripts() { e posso creare il file js sotto il file booking.php e posso inserire il nome di quel file js in

Sanjay Nakate Sanjay Nakate
19 lug 2014 09:44:52

ricevo l'errore arse error: syntax error, unexpected T_STRING, expecting T_FUNCTION su questa riga di hook add_action('wp_enqueue_scripts', ajax_enqueuescripts);

Sanjay Nakate Sanjay Nakate
19 lug 2014 09:53:33

ho fatto tutto quello che hai detto nella risposta ma ricevo ancora l'errore sopra

Sanjay Nakate Sanjay Nakate
19 lug 2014 09:56:00

Sto usando lo stesso codice che ho postato sopra, ma per me funziona bene.

Jigar Gorakhiya Jigar Gorakhiya
19 lug 2014 10:07:09

quando aggiungo gli hook action in alto non mostra alcun errore ma l'ajax non viene chiamato controlla il link ed evita l'opzione Gender non è in uso seleziona direttamente il calendario e poi l'orario http://test.skovian.com/thefoodieclub.com/dine/dine/lunch-at-olive-bistro/

Sanjay Nakate Sanjay Nakate
19 lug 2014 10:20:21

posso condividere con te il file del plugin

Sanjay Nakate Sanjay Nakate
19 lug 2014 10:23:36

non ho ricevuto il tuo commento puoi commentare di nuovo nel sito admin

Sanjay Nakate Sanjay Nakate
19 lug 2014 10:27:06

Ciao sanjay, per favore prendi il mio file dei plugin da qui

Jigar Gorakhiya Jigar Gorakhiya
19 lug 2014 11:02:57

E riguardo a quel commento sul sito admin, per favore ignoralo.

Jigar Gorakhiya Jigar Gorakhiya
19 lug 2014 11:05:48

il mio plugin usa già questi hook add_action( 'admin_enqueue_scripts', array(&$this, 'my_enqueue_scripts_css' )); add_action( 'admin_enqueue_scripts', array(&$this, 'my_enqueue_scripts_js' ));

Sanjay Nakate Sanjay Nakate
19 lug 2014 11:19:39

Dove hai visualizzato la tua casella di selezione sul lato amministrativo o sul frontend?

Jigar Gorakhiya Jigar Gorakhiya
19 lug 2014 11:39:39

sito frontend per l'utente finale

Sanjay Nakate Sanjay Nakate
19 lug 2014 11:46:36
Mostra i restanti 9 commenti
5

Aggiungi questo nella pagina php del tuo plugin

 add_action("wp_ajax_ajax_plugin_call", "ajax_plugin_call_callback"); 
 add_action("wp_ajax_nopriv_ajax_plugin_call", "ajax_plugin_call_callback");

Funzione Ajax nella pagina Php

function ajax_plugin_call_callback{
   global $wpdb;
   print_r($_POST) ; 
   // scrivi il tuo codice Php
   die;

}

Il tuo codice Javascript sarà così

jQuery(document).ready(function(){
  jQuery('#formID').bind('submit', function() { // Pulsante di invio del form
      var form_value =  jQuery('#formID'); 
      var form_data = form_value.serialize(); // Serializza il Form 
      form_data['action']='ajax_plugin_call'; // Azione 
     jQuery.post('<?php  echo admin_url('admin-ajax.php'); ?>',form_data,function(response){

         // Qui riceverai la risposta Ajax

       });
    }
 }); 

Controlla questo, ti aiuterà con le chiamate Ajax in WordPress nel plugin.

19 lug 2014 13:32:48
Commenti

Grazie per la tua risposta, ma per favore elabora. La tua risposta è considerata un dump di codice.

engelen engelen
19 lug 2014 13:54:21

@engelen hey ho usato ajax come var data = { current_datedddd: sdfdsfsdf, post_id: "'.$duplicate_of.'", action: "call_addon_price1" '.$attribute_fields_str.' }; alert(sdfdsfsdf); sta inviando il valore del tempo ma nella funzione action: "call_addon_price1" non riesco a memorizzarlo in una variabile usando POST

Sanjay Nakate Sanjay Nakate
19 lug 2014 14:27:35

puoi dirmi cos'è "$attribute_fields_str"?

Riteshdjoshi Riteshdjoshi
19 lug 2014 14:31:15

@engelen puoi controllare la mia chiamata ajax http://test.skovian.com/thefoodieclub.com/dine/dine/lunch-at-olive-bistro/

Sanjay Nakate Sanjay Nakate
19 lug 2014 14:34:55

Per favore prova questo add_action("wp_ajax_ajax_call_addon_price1", "call_addon_price1_callback"); add_action("wp_ajax_nopriv_call_addon_price1", "call_addon_price1_callback");

  function call_addon_price1_callback(){
   prova questo nel tuo plugin
   print_r($_POST);
   die;
  }
Riteshdjoshi Riteshdjoshi
19 lug 2014 14:45:11
0

Ho chiamato AJAX utilizzando il codice qui sotto e funziona correttamente. Qui sto inviando la variabile time a questa pagina utilizzando il metodo POST $.post("'. plugins_url().'/woocommerce-booking/gettime.php",

var time=0;
jQuery("#time_slot").change(function()
                                {   
                                time=time_slot.value;
                            $.post("'. plugins_url().'/woocommerce-booking/gettime.php",
                                 {name: time},
                                  function(response){
                                  console.log(response);
                                  }
                                );  
                                 });

Il mio file gettime.php sarà simile a quello qui sotto e riceverà la risposta dalla mia chiamata AJAX.

<?php session_start();
    echo $name= $_POST["name"];
    file_put_contents("name.txt", $name)

 ?>
21 lug 2014 08:56:52
0

Per prima cosa devi accodare lo script e definire l'URL. Poi devi creare una funzione per la tua callback AJAX e aggiungere un'azione di WordPress che la richiami. Ecco un video in cui lo spiego, spero ti aiuti. :)

https://www.youtube.com/watch?v=R7OK-TtNuEc

25 lug 2014 05:27:20