Я хотів би додати спеціальну групову дію до спеціального типу публікації. Я натрапив на фільтр bulk_actions-screenid
, який відповідно до його документації робив би саме так, як я хотів . Однак приблизно через дві години налагодження я знайшов наступний коментар // This filter can currently only be used to remove actions.
у рядку 278 класу-wp-list-table.php - чудово!
Я подумав, що я можу зламати його, використовуючи jQuery, щоб ввести дію як варіант
/**
* 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
}
Це працює. Тепер дія з’являється в меню масових дій. Я був припущений, що зможу потім додати певну логіку, admin_init
щоб зробити необхідну обробку - однак, здається, create_invoice
вона ніколи не публікується. Чи є щось, що я роблю неправильно?
=== ОНОВЛЕННЯ ===
Я оновив код, щоб використовувати load-*
гачок. Коли я застосовую групову дію на users.php - я бачу create_invoice
, що передається через запит. Однак на edit.php create_invoice
ніколи не друкується.
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');