Ciao,
Ho creato un plugin WordPress con un form che deve spedire i dati di un form alla tabella wp_postmeta del database, ho seguito le pratiche migliori specificate da WordPress stesso ed il plugin funziona correttamente, infatti i valori del form vengono salvati nel database poi vengono presi e inseriti in un div.
Ora il mio problema è capire come riuscire a passare i valori dei campi del form ad una variabile PHP senza che debba ricaricare tutta la pagina perchè questa variabile PHP venga popolata con il valore che mi interessa.
Ho bisogno di fare questo perchè poi queste variabili con i valori del form devono andare a popolare delle funzioni PHP
Questo è il codice su cui ho lavorato, mi piacerebbe sapere voi come risolvereste questo problema grazie.
Codice della pagina isk.php nella cartella del plugin
Questo il codice jQuery nel file script.js nella cartella del plugincodice:function isk_calc( $content ) { global $post; // controllo per il post type if ( ! isset( $post->post_type ) || $post->post_type != 'listing' ) return $content; // controllo anche se siamo all'interno di un post valido, controllando l'esistenza di un ID valido if ( ! isset( $post->ID ) ) return $content; // recupero l'attuale votazione memorizzata all'interno del post ob_start(); ?> <div class="post-rate"> <p class="calc-info"> <b class="date-count"></b> </p> <div class="rating"> <form method="post" id="post-calc"> <input type="date" name="dataskipass" action="" required></input> <fieldset class="tipo-eta one-half last"> <label>Età</label> <select id="tipo-eta" name="tipo-eta"> <option value="adulto">Adulto</option> <?php if(get_field('data_senior')){?> <option value="senior">Senior nati prima del <?php formatting_date(get_field('data_senior'),'','')?></option> <? }?> <?php if(get_field('data_under18')){?> <option value="teen">Teen nati dopo il <?php formatting_date(get_field('data_under18'),'','')?></option> <? }?> <?php if(get_field('data_junior')){?> <option value="junior">Junior nati dopo il <?php formatting_date(get_field('data_junior'),'','')?></option> <? }?> <?php if(get_field('data_baby')){?> <option value="baby">Baby nati dopo il <?php formatting_date(get_field('data_baby'),'','')?></option> <? }?> </select> </fieldset> <fieldset class="tipo-skipass one-half last"> <label>Tipo Skipass</label> <select id="tipo-skipass" name="tiposkipass"> <?php if(get_field('giornaliero_adulto_min')){?> <option value="giornaliero">Giornaliero</option> <? }?> <?php if(get_field('5gg_adulto_min')){?> <option value="5giorni">5 giorni</option> <? }?> <?php if(get_field('7gg_adulto_min')){?> <option value="7giorni">7 giorni</option> <? }?> <?php if(get_field('stagionale_adulto_max')){?> <option value="stagionale">Stagionale</option> <? }?> </select> </fieldset> <input type="number" name="nskipass"></input> <input type="number" name="budget"></input> <br /> <input type="hidden" name="post_id" value="<?php echo $post->ID ?>" /> <input type="submit" value="<?php _e( 'Vota!', 'isk' ) ?>" /> <img src="<?php echo plugins_url( 'loading.gif', __FILE__ ) ?>" style="display:none;" class="loading" /> </form> </div> </div> <?php return ob_get_clean().$content ; } add_filter( 'the_content', 'isk_calc' ); function isk_enqueue_assets() { wp_enqueue_script( 'isk-custom', plugins_url( 'script.js' , __FILE__ ), array( 'jquery' ) ); wp_localize_script( 'isk-custom', 'isk_vars', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'isk-calc' )) ); } add_action( 'wp_enqueue_scripts', 'isk_enqueue_assets' ); function isk_add_calc() { if ( ! wp_verify_nonce( $_REQUEST['isk_nonce'], 'isk-calc' ) ) die ( 'Non autorizzato!'); $data_skipass = $_REQUEST['dataskipass']; $tipo_skipass = $_REQUEST['tiposkipass']; $tipo_eta = $_REQUEST['tipoeta']; $n_skipass = $_REQUEST['nskipass']; $budget = $_REQUEST['budget']; $post_id = intval( $_REQUEST['post_id'] ); update_post_meta( $_REQUEST['post_id'], '_post_data_skipass', $data_skipass); update_post_meta( $_REQUEST['post_id'], '_post_n_skipass', $n_skipass); update_post_meta( $_REQUEST['post_id'], '_post_budget_skipass', $budget); update_post_meta( $_REQUEST['post_id'], '_post_tipo_skipass', $tipo_skipass); update_post_meta( $_REQUEST['post_id'], '_post_tipo_eta', $tipo_eta); $valori = array( 'tiposkipass' => $tipo_skipass, 'tipoeta' => $tipo_eta, 'nskipass' => $n_skipass, 'budget' => $budget, 'dataskipass' => $data_skipass, ); echo json_encode($valori); die(); } add_action( 'wp_ajax_add_post_rating', 'isk_add_calc' ); add_action( 'wp_ajax_nopriv_add_post_rating', 'isk_add_calc' );
codice:jQuery(document).ready(function($){ $('#post-calc').on( 'submit', function(e){ e.preventDefault(); var form = $(this), dataskipass = form.find('input[name=dataskipass]').val(); nskipass = form.find('input[name=nskipass]').val(); budget = form.find('input[name=budget]').val(); loading = form.find('img.loading'); loading.show(); $.post( isk_vars.ajaxurl, { // il nome dell'action che utilizzeremo con il gancio wp_ajax_ action : 'add_post_rating', post_id : form.find('input[name=post_id]').val(), dataskipass:form.find('input[name=dataskipass]').val(), nskipass : form.find('input[name=nskipass]').val(), budget : form.find('input[name=budget]').val(), // controllo di sicurezza tramite il nonce isk_nonce : isk_vars.nonce }, function( response ) { loading.hide(); $('.calc-info').find('b.date-count').text( response.dataskipass + response.nskipass + response.nskipass); }, 'json' ); }); });

Rispondi quotando
