Saya ingin menambahkan tindakan massal kustom ke jenis posting kustom. Saya menemukan filter bulk_actions-screenid
, yang menurut dokumentasinya , akan melakukan persis seperti yang saya inginkan . Namun, setelah sekitar dua jam debug, saya menemukan komentar berikut // This filter can currently only be used to remove actions.
pada baris 278 dari class-wp-list-table.php - hebat!
Saya pikir saya bisa meretasnya dengan menggunakan jQuery untuk menyuntikkan tindakan sebagai opsi
/**
* 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
}
Ini bekerja. Tindakan sekarang muncul di menu tindakan massal. Saya berada di bawah asumsi saya kemudian dapat menambahkan beberapa logika admin_init
untuk melakukan pemrosesan yang diperlukan - namun, tampaknya create_invoice
tidak pernah diposting. Apakah ada yang salah yang saya lakukan?
=== UPDATE ===
Saya memperbarui kode untuk menggunakan load-*
kail. Ketika saya menerapkan tindakan massal pada users.php - saya lihat create_invoice
diteruskan melalui permintaan. Namun, pada edit.php create_invoice
tidak pernah dicetak.
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');