ฉันต้องการเพิ่มการดำเนินการเป็นกลุ่มที่กำหนดเองในประเภทโพสต์ที่กำหนดเอง ฉันมาข้ามตัวกรองbulk_actions-screenid, ซึ่งตามของเอกสารจะทำตรงตามที่ฉันต้องการ อย่างไรก็ตามหลังจากการดีบักประมาณสองชั่วโมงฉันพบความคิดเห็นต่อไปนี้// This filter can currently only be used to remove actions.ที่บรรทัด 278 ของ class-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ไม่เคยโพสต์ มีบางอย่างที่ฉันทำผิดหรือเปล่า?
=== UPDATE ===
ฉันอัปเดตรหัสเพื่อใช้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');