Tôi muốn thêm một hành động hàng loạt tùy chỉnh vào một loại bài tùy chỉnh. Tôi đã đi qua bộ lọc bulk_actions-screenid
, mà theo tài liệu của nó , sẽ làm chính xác như tôi muốn . Tuy nhiên, sau khoảng hai giờ gỡ lỗi, tôi đã tìm thấy nhận xét sau đây // This filter can currently only be used to remove actions.
về dòng 278 của class-wp-list-table.php - thật tuyệt!
Tôi hình dung mình có thể hack nó bằng cách sử dụng jQuery để thực hiện hành động như một tùy chọn
/**
* Hack to add a custom bulk action.
*/
public function admin_footer() {
if($_GET['post_type'] != self::POST_TYPE) return;
?>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('<option>').val('create_invoice').text('Bill').appendTo("select[name='action']");
});
</script>
<?php
}
Những công việc này. Các hành động bây giờ xuất hiện trong menu hành động hàng loạt. Tôi đã theo giả định sau đó tôi có thể thêm một số logic vào admin_init
để thực hiện xử lý cần thiết - tuy nhiên, có vẻ như nó create_invoice
không bao giờ được đăng. Có điều gì đó tôi đang làm sai?
=== CẬP NHẬT ===
Tôi đã cập nhật mã để sử dụng load-*
hook. Khi tôi áp dụng hành động hàng loạt trên users.php - tôi thấy create_invoice
được chuyển qua yêu cầu. Tuy nhiên, trên edit.php create_invoice
không bao giờ được in.
function a39x2_admin_footer() {
?>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('<option>').val('create_invoice').text('Bill').appendTo("select[name='action']");
jQuery('<option>').val('create_invoice').text('Bill').appendTo("select[name='action2']");
});
</script>
<?php
}
add_action('admin_footer', 'a39x2_admin_footer');
function a39x2_load() {
echo "<pre>" . print_r($_REQUEST, true) . "</pre>";
}
add_action('load-edit.php', 'a39x2_load');
add_action('load-users.php', 'a39x2_load');