Obtendo dados do database e usá-lo para preencher um formulário – WordPress

Eu tenho os seguintes arquivos:

Arquivo do plugin principal:

 admin_url('admin-ajax.php') ) ); wp_enqueue_script('jquery'); wp_enqueue_script('ffd_js_script', plugin_dir_url(__FILE__) . 'js/ffd_js_script.js'); } 

getuser.php:

 get_row ( $wpdb->prepare ( "SELECT * FROM {$myoptionValue[tablename]} WHERE personeelsNummer = %d", $str ) ); if($result2) { echo json_encode( $result2 ); } } ?> 

ffd_js_script.js:

 jQuery(document).ready(function($){ jQuery('#input_1_2').change(function() { jQuery.ajax({ type : 'post', dataType : 'json', url : myAjax.ajaxurl, data : {action: 'getuser', this.value}, succes: function(response){ var parsed = JSON.parse(response); var arr = []; for(var x in parsed){ arr.push(parsed[x]);} jQuery('#input_1_3').val(arr[1]); jQuery('#input_1_4').val(arr[2]); } }) }); }); 

Como faço para implementar isso corretamente? Na primeira vez que estou fazendo um plugin e li muito sobre isso e vi um monte de exemplos, mas eu não estou conseguindo implementar isso corretamente.

EDITAR:

SE eu replace a instrução sql com o seguinte:

 "SELECT * FROM {$myoptionValue[tablename]} WHERE personeelsNummer = %s", 1 

Eu obtenho meus resultados no console devido ao seguinte código:

 echo json_encode( $result2 ); 

Então, o código a seguir não está sendo executado corretamente:

 succes: function(response){ var parsed = JSON.parse(response); var arr = []; for(var x in parsed){ arr.push(parsed[x]);} jQuery('#input_1_3').val(arr[1]); jQuery('#input_1_4').val(arr[2]); } 

ok, você está chegando lá. 1º Quando você localizar o script, adicione um nonce para melhor segurança:

 wp_register_script('ffd_js_script', WP_PLUGIN_URL.'/FixFormData/js/ffd_js_script.js', array('jquery')); wp_localize_script('ffd_js_script', 'myAjax', array( 'ajaxurl' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce( 'ajax-nonce' ) ) ); 

Então, você precisa colocar getuser.php em algum lugar onde o plugin possa vê-lo, então, certifique-se de incluí-lo ou colocá-lo no arquivo principal do plugin.

 function getuser($str) { global $wpdb; //verify the nonce if ( ! wp_verify_nonce( $_REQUEST['_nonce'], 'ajax-nonce' ) ) die ( 'Non autorizzato!'); $myoption = get_option( 'fixformdata_options' ); $myoptionValue = maybe_unserialize( $myoption ); $result2 = $wpdb->get_row ( $wpdb->prepare ( "SELECT * FROM {$myoptionValue[tablename]} WHERE personeelsNummer = %d", $str ) ); if($result2) { echo json_encode( $result2 ); } die(); } 

Então, para tornar a function getuser que pode ser chamada de ajax, você precisa fazer a conexão correta:

 //ajax hooks add_action( 'wp_ajax_nopriv_getuser', 'getuser' ); add_action( 'wp_ajax_getuser', 'getuser' ); 

No js, ​​você precisa passar o nonce também:

 $.post(myAjax.ajaxurl, { action : 'getuser', _nonce : myAjax.nonce, value : $(this).value }, function( response ) { ... }); 

o resto do js parece bom, me perdoe por alguns erros de digitação, escrevi aqui, então não foi testado.