El primer parámetro de wp_localize_script debe ser el identificador utilizado por el archivo JavaScript para el que están destinadas las variables. En tu caso, esto debería ser ar_home_js
y no ar_front_functions_js
.
Probé ar_home_js, no funciona y sigue teniendo el mismo problema. gracias de todos modos.
Sólo una idea: podría ser el orden equivocado. Lo recomendaría así:
function ar_include_plugin_front_end_files(){wp_register_script('ar_home_js', plugin_dir_url( DIR ) . 'public/js/ar-home.js' , array('jquery') , '1.0.0' , true );
wp_register_style('ar_promo_style', plugin_dir_url( DIR ) . 'public/css/ar-promo.css' );
wp_enqueue_style('ar_promo_style');
if( is_front_page() || is_home() ){
wp_enqueue_script('ar_home_js');
wp_localize_script( 'ar_home_js', 'ar_var' ,array(
'ajaxUrl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce( 'wp_rest' )
)
);
}
}
add_action( 'wp_enqueue_scripts', 'ar_include_plugin_front_end_files' );
No probado.
Sí, de esta manera funciona. Obtengo las variables que necesito. Gracias.
Ahora el problema es que la llamada ajax regresa con el código de estado 200 ok, pero devuelve la página desde donde llamé a la llamada ajax.
He estado usando estas funciones por un tiempo y siempre funcionan, ahora simplemente no funciona.
esto esta del lado del servidor:
add_action( 'wp_ajax_ar_ajax_click_count', 'ar_ajax_click_count' );
add_action( 'wp_ajax_nopriv_ar_ajax_click_count', 'ar_ajax_click_count' );function ar_ajax_click_count(){
if ( wp_verify_nonce( $_POST['_wpnonce'], 'wp_rest' ) ){
if ( preg_match( '/^(\d){1,10}$/' , $_POST['id'] ) ) {
// if (!current_user_can('administrator')) {
count_clicks( $_POST['id'] );
// }
echo json_encode(
array(
'sts' => $_POST['id']
)
);
exit;
} else {
exit;
}
} else {
exit;
}
}
Esto está en el lado de JavaScript:
function javascripCountCliks(id){
jQuery(document).ready( function($) {
$.ajax( {
method : 'POST',
dataType : 'json',
url : ar_var.ajaxurl,
data : {
id : id,
_wpnonce : ar_var.nonce,
action : 'ar_ajax_click_count' },
beforeSend : function( xhr ){
}
} )
.done(
function( data ){
console.log(data);
}
);
} );
}
alguna idea?
no usar wp_verify_nonce
para el control nonce sino https://developer.wordpress.org/reference/functions/check_ajax_referer/