Skip to content

Instantly share code, notes, and snippets.

@sukhikh18
Created July 9, 2018 08:58
Show Gist options
  • Save sukhikh18/154e32c4981affb497ac8f0d86efe0bd to your computer and use it in GitHub Desktop.
Save sukhikh18/154e32c4981affb497ac8f0d86efe0bd to your computer and use it in GitHub Desktop.
Wordpress. Work with ajax.
<?php
// Константы назначены ТОЛЬКО для показательного примера.
// jquery заменить на свой handle скрипта (если такой имеется)
define('AJAX_ACTION_NAME', 'my_action_name');
define('AJAX_VAR', 'my_ajax_var');
define('MY_SECRET_STRING', 'any_secret_string');
add_action( 'wp_enqueue_scripts', 'add_ajax_data', 99 );
function add_ajax_data(){
wp_localize_script('jquery', AJAX_VAR,
array(
'url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce( MY_SECRET_STRING )
)
);
}
// Добавить ajax-запрос в подвал админки:
add_action('admin_print_footer_scripts', 'my_action_javascript', 99);
// Добавить ajax-запрос в подвал сайта:
add_action('wp_footer', 'my_action_javascript', 99);
function my_action_javascript() {
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('form').submit(function(e) {
e.preventDefault();
var wp_ajax_data = <?=AJAX_VAR;?>;
var ajaxdata = {
action: <?=AJAX_ACTION_NAME;?>,
nonce: wp_ajax_data.nonce,
whatever: 1234
};
$.ajax({
type: 'POST', url: wp_ajax_data.url, data: ajaxdata,
success: function(response){
alert('Получено с сервера: ' + response);
}
}).fail(function() {
console.log('Ajax error!');
});
});
});
</script>
<?php
}
// Для того чтобы работало для НЕавторизированных пользователей:
// add_action('wp_ajax_nopriv_' . AJAX_ACTION_NAME, 'my_action_callback');
add_action('wp_ajax_' . AJAX_ACTION_NAME, 'my_action_callback');
function my_action_callback() {
if( ! wp_verify_nonce( $_POST['nonce'], MY_SECRET_STRING ) ){
echo 'Ошибка! нарушены правила безопасности';
wp_die();
}
// do something.. for ex:
echo intval( $_POST['whatever'] );
wp_die();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment