WordPress教程:如何使用AJAX在后台删除文章
文章目录
需求说明
在WordPress后台,通过Ajax实现文章的快速删除功能,使得操作更加便捷和快速。将以下代码添加到当前启用的WordPress主题的functions.php
文件中即可实现该功能。
代码实现
1. 添加JavaScript代码
将JavaScript代码添加到WordPress后台,用于捕获删除文章的点击事件,并通过Ajax请求将文章移到回收站。
add_action('admin_footer', 'dahuzi_custom_internal_javascript'); function dahuzi_custom_internal_javascript() { echo "<script> jQuery(function($){ $('body.post-type-post .row-actions .trash a').click(function(event){ event.preventDefault(); var url = new URL($(this).attr('href')), nonce = url.searchParams.get('_wpnonce'), // MUST for security checks row = $(this).closest('tr'), postID = url.searchParams.get('post'), postTitle = row.find('.row-title').text(); row.css('background-color', '#ffafaf').fadeOut(300, function(){ row.removeAttr('style').html('<td colspan=\'5\' style=\'background:#fff;border-left:1px solid #FF5722;border-left-width:4px;color:#555\'><strong>' + postTitle + '</strong> 已被移动到回收站</td>').show(); }); $.ajax({ method: 'POST', url: ajaxurl, data: { 'action' : 'moveposttotrash', 'post_id' : postID, '_wpnonce' : nonce } }); }); }); </script>"; }
2. 添加PHP代码处理Ajax请求
在服务器端处理Ajax请求,确保安全性并将文章移到回收站。
add_action('wp_ajax_moveposttotrash', function() { check_ajax_referer('trash-post_' . $_POST['post_id']); wp_trash_post($_POST['post_id']); die(); });
兼容性说明
如果你想将这个功能用于自定义文章类型,将代码中的.post-type-post
替换成.post-type-{post-type-name}
。
注意事项
该功能使用了URL API,在较旧的浏览器中可能不起作用。如果需要兼容性,可以考虑引入Polyfill或者使用其他方法解析URL。
代码不会刷新文章计数(全部,已发布,回收站等),需要手动刷新页面来更新计数。
代码整理及错误修正
确保代码格式正确,避免拼写错误和语法错误。以下是整理后的代码:
// 后台 文章列表 ajax删除文章 add_action('admin_footer', 'dahuzi_custom_internal_javascript'); function dahuzi_custom_internal_javascript() { echo "<script> jQuery(function($){ $('body.post-type-post .row-actions .trash a').click(function(event){ event.preventDefault(); var url = new URL($(this).attr('href')), nonce = url.searchParams.get('_wpnonce'), // MUST for security checks row = $(this).closest('tr'), postID = url.searchParams.get('post'), postTitle = row.find('.row-title').text(); row.css('background-color', '#ffafaf').fadeOut(300, function(){ row.removeAttr('style').html('<td colspan=\'5\' style=\'background:#fff;border-left:1px solid #FF5722;border-left-width:4px;color:#555\'><strong>' + postTitle + '</strong> 已被移动到回收站</td>').show(); }); $.ajax({ method: 'POST', url: ajaxurl, data: { 'action' : 'moveposttotrash', 'post_id' : postID, '_wpnonce' : nonce } }); }); }); </script>"; } add_action('wp_ajax_moveposttotrash', function() { check_ajax_referer('trash-post_' . $_POST['post_id']); wp_trash_post($_POST['post_id']); die(); });
将上述代码添加到WordPress主题的functions.php
文件中,即可在后台实现通过Ajax删除文章的功能。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123@#-@12-3.com举报,一经查实,本站将立刻删除。
共有 30 条评论