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}

注意事项

  1. 该功能使用了URL API,在较旧的浏览器中可能不起作用。如果需要兼容性,可以考虑引入Polyfill或者使用其他方法解析URL。

  2. 代码不会刷新文章计数(全部,已发布,回收站等),需要手动刷新页面来更新计数。

代码整理及错误修正

确保代码格式正确,避免拼写错误和语法错误。以下是整理后的代码:

// 后台 文章列表  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 条评论