WordPress中的Ajax通过向/wp-admin/admin-Ajax发送HTTP帖子来工作。php(默认情况下),然后触发相应的挂钩。因此,将一些jquery附加到由delete按钮触发的事件,然后将其发布到admin ajax。php有一个操作,比如delete\\u my\\u options(),它实际上运行要删除的php。然后,您有一个称为回调的函数,该函数在成功完成ajax请求后运行。例如,您可以使用此选项淡出#log div。
简而言之,您有三个步骤,操作、ajax和回调。该操作由DOM事件触发,并附加到两个挂钩,即wp\\u ajax{action\\u name}和wp\\u ajax\\u nopriv{action\\u name}(仅当您不希望登录用户能够执行此操作时)。当该操作发布到wp admin/admin ajax时,这些将触发。php。ajax是与之挂钩的php(通常)函数。回调函数是一个javascript函数,在ajax成功完成时触发。
Step by step:步骤1,在js文件中
jQuery(\'#hide_debug\').click(function()
{
var data = {};
data.action = \'clear_log_action\';
data.options_delete_nonce = ajax_object.options_delete_nonce;
jQuery.post(ajax_object.ajax_url, data, clear_log_callback);
});
第2步,在你的函数中。php或插件将此添加到javascript排队的函数中:(谢谢@Milo)
wp_localize_script( \'my_js_file_name\', \'ajax_object\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) , \'options_delete_nonce\' => wp_create_nonce( \'options_delete_nonce\' ), ) );
然后将其添加到函数中。php或插件:
// Edit: removed the nopriv hook (Thanks @toscho)
add_action(\'wp_ajax_clear_log_action\',\'clear_log_ajax\'); // attach your data.action to wp_ajax and wp_ajax_nopriv and hook your php function
function clear_log_ajax() {
$nonce = $_POST[\'options_delete_nonce\'];
// Edit: Added nonces and permissions check (Thanks @Otto)
if( wp_verify_nonce( $nonce, \'options_delete_nonce\' ) && current_user_can( \'manage_options\' ) ) {
delete_option(\'wow_tweets_log\');
die(); // make sure to put a die() or exit() at the end of your ajax
}
}
第3步,返回js文件
// output will be what is echoed from your ajax, if anything
function clear_log_callback(output)
{
jQuery(\'#log\').hide();
}