Trên thực tế, không có hook nào được kích hoạt sau khi tải lên tập tin phương tiện, ít nhất là theo như tôi biết. Vấn đề với các hook có sẵn trong quá trình tải lên và lưu các tệp và dữ liệu phương tiện là chúng bị giới hạn ở một phần của quy trình, và vì vậy sử dụng bất kỳ trong số chúng là không đáng tin cậy. Ví dụ: add_attachment
được kích hoạt sau khi một tệp mới hoàn thành quá trình tải lên trước khi chỉnh sửa siêu dữ liệu tệp và nếu bạn có ý định chuyển hướng người dùng tại thời điểm này, nó sẽ phá vỡ quy trình tải lên cho các tệp tiếp theo nếu chúng tôi có nhiều hơn một tệp tải lên, nó có thể phù hợp mặc dù cho các loại hành động khác.
Tuy nhiên, đối với trường hợp cụ thể của bạn, bạn có thể nối vào hook admin_init
hành động và kiểm tra xem chúng tôi có ở trên màn hình thư viện phương tiện hay không sau khi chúng tôi tải lên hoặc chỉnh sửa tệp, chúng tôi biết rằng bằng cách lưu số lượng tệp đính kèm trước khi tải lên và so sánh số lượng tệp đính kèm sau tải lên:
add_action('admin_init', 'redirect_after_media_save');
function redirect_after_media_save() {
global $pagenow;
// when visiting the upload screen, we save the number of attachments
if ( $pagenow == 'media-new.php' ) {
$attachments_before = array_sum((array)wp_count_attachments());
update_option('count_attach_before', $attachments_before);
}
if ( $pagenow == 'upload.php' ) { // we are on media library page
// get attachments count before and after upload
$attachments_before = get_option('count_attach_before');
$attachments_after = array_sum((array)wp_count_attachments());
if (
// there are new files uploaded
( wp_get_referer() == admin_url('media-new.php') && $attachments_after > $attachments_before )
||
// or we have just edited media file
isset($_GET['posted'])
) {
// redirect to desired location
wp_redirect(admin_url());
exit;
}
}
}
Mã này sẽ chuyển hướng người dùng đến bảng điều khiển sau khi tải lên hoặc chỉnh sửa thành công tệp phương tiện, bạn có thể điều chỉnh nó cho phù hợp với nhu cầu của mình. Bạn cũng có thể muốn chọn hook quản trị khác ngoài việc admin_init
bạn muốn thực hiện các tác vụ khác ngoài chuyển hướng.