ฉันต้องการเพิ่มการดำเนินการเป็นกลุ่มที่กำหนดเองในประเภทโพสต์ที่กำหนดเอง ฉันมาข้ามตัวกรอง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');