Fail-Safe: Pastikan Bulk Action WooCommerce Selalu Muncul untuk Shop Manager

Snippet ampuh untuk memaksa bulk action tetap ada bagi role tertentu, mencegah plugin lain menghapusnya.

Mulai membaca
Fail-Safe: Pastikan Bulk Action WooCommerce Selalu Muncul untuk Shop Manager

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.

  1. Buat file bernama 00-dicky-woocommerce-bulk-failsafe.php di dalam folder /wp-content/mu-plugins/.
    • Jika folder mu-plugins belum ada, buat folder tersebut di dalam /wp-content/.
  2. 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

  1. Checkbox selalu muncul untuk role yang ditargetkan.
  2. Admin tetap normal mengakses semua fitur bawaan.
  3. Tidak perlu mematikan HPOS atau downgrade versi WooCommerce/Plugin apa pun.
Selesai membaca. Kembali ke atas
Semua catatan
  1. 01

    Cara Mengamankan Ponsel Ketika Dicuri atau Hilang

    Urutan darurat yang harus dilakukan ketika ponsel hilang: blokir SIM, amankan bank, pulihkan email, keluarkan perangkat, dan siapkan jalur penyelamatan sebelum kejadian.

    Baca catatan
  2. 02

    Risiko yang Sering Terlambat Disadari: Website Tersandera Vendor

    Website bisnis bisa berubah dari aset menjadi beban ketika domain, hosting, lisensi, dan akses dipegang oleh pihak yang suatu hari tidak bisa dihubungi. Inilah cara mengenali risiko itu sejak awal.

    Baca catatan
  3. 03

    Mau Keluar dari Marketplace? Jangan Sampai Anda Cuma Pindah Masalah

    Keluar dari marketplace bisa menjadi langkah besar, tetapi toko online sendiri berarti Anda mengambil alih checkout, server, keamanan, data, traffic, dan maintenance.

    Baca catatan