Pernahkah Anda mengalami situasi di mana checkbox atau dropdown “Tindakan Massal” (Bulk Actions) di halaman Pesanan WooCommerce tiba-tiba menghilang untuk Shop Manager? Hal ini sering terjadi karena konflik plugin yang secara tidak sengaja menghapus action yang tersedia untuk user non-admin.
Kita bisa menerapkan mekanisme “fail-safe” agar action massal ini tidak pernah kosong untuk role tersebut.
Kode Fail-Safe (Metode MU-Plugin)
Cara paling aman dan handal untuk menerapkan ini adalah sebagai Must-Use Plugin (MU-Plugin). Metode ini memastikan kode tereksekusi sebelum plugin biasa dan tidak akan terhapus saat Anda ganti tema.
- Buat file bernama
00-dicky-woocommerce-bulk-failsafe.phpdi dalam folder/wp-content/mu-plugins/.- Jika folder
mu-pluginsbelum ada, buat folder tersebut di dalam/wp-content/.
- Jika folder
- Salin dan tempel kode berikut ke dalam file tersebut:
<?php
/**
* Snippet Name: WooCommerce Bulk Action Fail-Safe
* Description: Forces bulk actions (like 'Edit') to appear for Shop Managers even if other plugins try to unset them.
* Version: 1.0.0
* Author: Dicky Ibrohim
* Author URI: https://www.dickyibrohim.com
*/
// Kita gunakan prioritas sangat tinggi (9999) agar ini berjalan TERAKHIR,
// mengembalikan apa yang mungkin dihapus plugin lain.
add_filter('bulk_actions-woocommerce_page_wc-orders', function ($actions) {
// 1. Cek User Saat Ini
$u = wp_get_current_user();
if (!$u || empty($u->roles)) return $actions;
// 2. Tentukan Role Target (Sesuaikan jika punya role custom)
$target_roles = array('shop_manager');
$is_target = (bool) array_intersect($target_roles, $u->roles);
// Jika bukan target role, biarkan apa adanya
if (!$is_target) return $actions;
// 3. Kondisi Fail-Safe
// Kalau ada plugin yang bikin array action jadi kosong/rusak, kita reset
if (!is_array($actions) || empty($actions)) {
$actions = array();
}
// 4. Kembalikan Action Minimal
// Kita tambahkan action ubah status secara manual.
// Adanya key di array ini cukup untuk memunculkan kembali UI Checkbox.
$actions['mark_processing'] = __('Change status to processing', 'woocommerce');
$actions['mark_completed'] = __('Change status to completed', 'woocommerce');
return $actions;
}, 9999);
Hasilnya
- Checkbox selalu muncul untuk role yang ditargetkan.
- Admin tetap normal mengakses semua fitur bawaan.
- Tidak perlu mematikan HPOS atau downgrade versi WooCommerce/Plugin apa pun.