Cách thêm hành động tuỳ chỉnh cho Bulk Actions

Ngày đăng: 31 - 03 - 2022 Lượt xem: 54 lượt

Không chỉ là xoá và chỉnh sửa, bạn muốn thêm một hành động tuỳ chỉnh cho Bulk Actions? Vậy bài viết này sẽ giúp bạn thực hiện điều đó.

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

Thêm hành động tuỳ chỉnh

Bài viết này, mình sẽ tạo thêm một hành động thay đổi hàng loạt trạng thái của các bài viết. Cụ thể hơn là mình muốn thay đổi trạng thái của các bài viết thành “Bản nháp”.

Bạn thêm đoạn code dưới đây vào file functions.php của child hoặc child theme nhé.

add_filter( 'bulk_actions-edit-post', 'hk_custom_bulk_actions' );
function hk_custom_bulk_actions( $bulk_array ) {
	$bulk_array['hk_make_draft'] = 'Sửa thành Bản nháp';
	return $bulk_array;
}

Ở đoạn code trên, mình sử dụng hook bulk_action-eidt-{$screen} Nếu bạn không muốn tạo hành động tuỳ chỉnh cho Bài viết, hay thay đổi giá trị của $screen.

Nếu là Trang, $screen sẽ là page. Cụ thể hơn là bulk_actions-edit-page. Tương tự các loại custom post type khác cũng như vậy nhé.

Xử lý hành động

Sau khi đã thêm hành động thành công ở trên Bulk Actions. Việc tiếp theo là bạn phải xử lý hành động đó. Ở phần này mình sẽ sử dụng đến filter hook handle_bulk_actions-{$screen}. Tương tự như phần trên, bạn phải thay đổi biến $screen sao cho phù hợp với nhu cầu của bạn nhé.

Hãy thêm đoạn code dưới đây vào bên dưới đoạn code ở phần trên.

function hk_bulk_action_handler( $redirect, $doaction, $object_ids ) {
	$redirect = remove_query_arg( array( 'hk_make_draft_done' ), $redirect );

	if ( $doaction == 'hk_make_draft' ) {

		foreach ( $object_ids as $post_id ) {
			wp_update_post( array(
				'ID' => $post_id,
				'post_status' => 'draft' // set status
			) );
		}

		$redirect = add_query_arg(
			'hk_make_draft_done',
			count( $object_ids ),
		$redirect );

	}

	return $redirect;
}

Thông báo sau khi áp dụng hành động

Đây là bước cuối cùng, bạn sẽ tạo một thông báo tuỳ chỉnh sau khi hành động của bạn được áp dụng. Tương tự hai phần trên, hãy thêm đoạn code sau vào file functions.php nhé.

add_action( 'admin_notices', 'hk_bulk_action_notices' );
function hk_bulk_action_notices() {
	if ( ! empty( $_REQUEST['hk_make_draft_done'] ) ) {
		echo '<div id="message" class="updated notice is-dismissible">
			<p>Trạng thái bài viết đã được cập nhập.</p>
		</div>';
	}
}

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

Lời kết

Mình hi vọng bài viết trên sẽ phần nào hỗ trợ bạn tốt hơn trong việc quản lý các bài viết trên WordPress. 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

guest
0 Góp ý
Inline Feedbacks
View all comments

Bài viết liên quan

Hướng dẫn custom Bảng tin trong admin WordPress

Hướng dẫn custom Bảng tin trong admin WordPress

11 - 05 - 2022

Bạn có nghĩ rằng bảng tin trong admin WordPress thật lộn xộn và có nhiều phần không cần thiết...

Cách đặt hình ảnh đại diện mặc định trong WordPress

Cách đặt hình ảnh đại diện mặc định trong WordPress

08 - 05 - 2022

Bạn có muốn đặt hình ảnh đại diện mặc định trong WordPress không? Nhiều theme sử dụng hình ảnh đại...

Hiển thị ngày đăng ký của người dùng vào trang tất cả người dùng

Hiển thị ngày đăng ký của người dùng vào trang tất cả người dùng

06 - 05 - 2022

Giả sử rằng có một cuộc tấn công spam vào trang web của bạn. Có gần 50 người dùng...

Làm việc với DateTime trong WordPress

Làm việc với DateTime trong WordPress

04 - 05 - 2022

Một năm trước, mình phát triển một plugin liên quan đến thời gian biểu. Và mình sớm nhận ra...

Tạo form tìm kiếm bằng shortcode trong WordPress

Tạo form tìm kiếm bằng shortcode trong WordPress

02 - 05 - 2022

Bạn muốn thêm form tìm kiếm vào bài viết, trang, hoặc sidebar của website? Thêm form tìm kiếm vào nội...

Thêm cột ảnh đại diện trong trang quản trị danh sách bài viết

Thêm cột ảnh đại diện trong trang quản trị danh sách bài viết

28 - 04 - 2022

Bạn có muốn hiển thị ảnh đại diện ra ngoài trang danh sách bài viết không? Hôm nay mình sẽ...

0
Would love your thoughts, please comment.x