मैं एक कस्टम पोस्ट प्रकार में एक कस्टम बल्क क्रिया जोड़ना चाहूंगा। मैं फ़िल्टर भर में आया था bulk_actions-screenid
, जो इसके दस्तावेज़ीकरण के अनुसार , जैसा मैं चाहता हूँ, वैसा ही करेगा । हालाँकि, लगभग दो घंटे की डिबगिंग के बाद, मुझे // This filter can currently only be used to remove actions.
क्लास-wp-list-table.php - महान की लाइन 278 पर निम्न टिप्पणी मिली !
मुझे लगा कि मैं विकल्प के रूप में कार्रवाई को इंजेक्ट करने के लिए 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');