Xoá bài viết trong trang quản trị WordPress với AJAX

Ngày đăng: 05 - 04 - 2022 Lượt xem: 404 lượt

Bạn có muốn xoá bài viết trong trang quản trị WordPress mà không cần tải lại trang không? Nếu có, thì bài viết này là dành cho bạn. Mình sẽ hướng dẫn bạn cách sử dụng AJAX để xoá bài viết trong trang quản trị WordPress.

Đây là kết quả mà bạn sẽ đạt được:

Xoá bài viết trong trang quản trị WordPress với AJAX

Bắt sự kiện khi người dùng click xoá bài viết với jQuery

Đoạn code dưới đây sẽ bắt được sự kiện khi người dùng thực hiện hành động xoá bài viết. Hãy bỏ nó vào file functions.php của theme hoặc child theme.

add_action( 'admin_footer', 'hk_extend_admin_js' );
function hk_extend_admin_js() {
    ob_start(); ?>

    <script>
    jQuery(function ($) {
        $("body.post-type-post .row-actions .trash a").click(function (e) {
            e.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">Post <strong>' +
                            postTitle +
                            "</strong> moved to the Trash.</td>"
                    )
                    .show();
            });

            $.ajax({
                method: "POST",
                url: "<?php echo admin_url('admin-ajax.php');?>",
                data: {
                    action: "moveposttotrash",
                    post_id: postID,
                    _wpnonce: nonce,
                },
            });
        });
    });
    </script>

    <?php
    $output = ob_get_contents();
    ob_clean();
    ob_end_flush();
    echo $output;
}

Ở đây mình sử dụng action hook admin_footer để thêm đoạn code jQuery trên vào footer trang quản trị.

Tại dòng thứ 7, bạn có thể thay thế .post-type-post thành tên custom post type phù hợp. Cụ thể là: .post-type-{POST TYPE NAME}.

Xử lý AJAX

Đoạn code dưới đây cũng được bỏ vào file functions.php:

add_action('wp_ajax_moveposttotrash', function() {
    check_ajax_referer( 'trash-post_' . $_POST['post_id'] );
    wp_trash_post( $_POST['post_id'] );

    die();
});

Ở đây, mình chỉ sử dụng hook wp_ajax_{ACTION}. Không sử dụng hook wp_ajax_nopriv_{ACTION} Bởi vì chức năng ở đây chỉ được sử dụng bởi quản trị viên.

Bạn cũng có thể nhận thấy rằng mình đã không chuyển $_POST['post_id'] vào hàm intval() vì không cần thiết. Thay vào đó, hàm get_post() bên trong wp_trash_post() sẽ thực hiện điều đó.

Kết Luận

Vậy là xong. Bạn đã có thể xoá bài viết ngay lập tức mà không cần phải đợi load lại trang. Bài viết này sẽ phần nào giúp bạn hiểu hơn về các hook trong WordPress và cách áp dụng AJAX trong các trường hợp cụ thể.

Nếu bài viết này hữu ích và giúp tiết kiệm được thời gian của bạn, hãy giúp mình chia sẻ nó. Ngoài ra nếu bạn quan tâm đến các chủ đề tương tự như vậy, hãy đọc các bài viết Thủ thuật WordPress khác và follow Fanpage để không bỏ lỡ bài viết mới từ mình nhé.

5 1 vote
Đánh giá bài viết

Nhận thông báo
Nhận thông báo cho
guest

0 Góp ý
Inline Feedbacks
View all comments

Bài viết liên quan

WordPress Multisite là gì? 6 bước cài đặt chi tiết

WordPress Multisite là gì? 6 bước cài đặt chi tiết

20 - 11 - 2022

Doanh nghiệp của bạn đang phát triển muốn mở rộng thêm nhiều chi nhánh và muốn xây dựng thêm...

Chi tiết cách kiểm tra mã độc WordPress và loại bỏ chúng

Chi tiết cách kiểm tra mã độc WordPress và loại bỏ chúng

15 - 11 - 2022

Đối với website, mã độc được sử dụng để đánh cắp thông tin khách hàng, nắm giữ thông tin...

So sánh Blogspot và WordPress, 2 nền tảng Blog tốt nhất hiện nay

So sánh Blogspot và WordPress, 2 nền tảng Blog tốt nhất hiện nay

11 - 11 - 2022

WordPress và Blogspot hiện nay đang là 2 nền tảng website dạng blog nổi tiếng nhất trên thế giới....

Uncategorized là gì, cách đổi tên danh mục Uncategorized trong WordPress

Uncategorized là gì, cách đổi tên danh mục Uncategorized trong WordPress

05 - 11 - 2022

Trong WordPress, Category để chỉ một danh mục được sử dụng để gom các bài viết có liên quan...

Elementor là gì? hướng dẫn cài đặt Elementor chi tiết

Elementor là gì? hướng dẫn cài đặt Elementor chi tiết

03 - 11 - 2022

Elementor là một plugin xây dựng trang giúp bạn dễ dàng tạo các trang web WordPress đẹp. Ngay cả...

4 cách xóa category trong URL WordPress đơn giản, nhanh chóng

4 cách xóa category trong URL WordPress đơn giản, nhanh chóng

02 - 11 - 2022

Nhà phát triển wordpress thêm / category / urls để dễ dàng xác định các trang web có /...

0
Would love your thoughts, please comment.x