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

Memahami kode MU-plugin untuk mengembalikan pilihan status pesanan Shop Manager di layar HPOS, termasuk cakupan, pengujian dan pemulihannya.

Mulai membaca
Ilustrasi sampul tentang Bulk Actions WooCommerce Hilang: MU-Plugin dan Batasnya, dengan teks di kiri dan potret di kanan.

Pernahkah Anda mengalami situasi di mana checkbox atau dropdown "Tindakan Massal" (Bulk Actions) di halaman Pesanan WooCommerce tiba-tiba menghilang untuk Shop Manager? Salah satu kemungkinan penyebabnya adalah plugin yang mengubah daftar action untuk user tertentu. Namun, tampilan yang hilang juga perlu dibedakan dari masalah izin, layar pesanan yang berbeda, atau gangguan antarmuka.

Kode berikut menambahkan kembali dua pilihan perubahan status untuk role yang ditargetkan pada layar pesanan tertentu. Bagi pengelola toko, tujuannya praktis: membantu pekerjaan pesanan tanpa langsung mengganti plugin atau mengubah sistem penyimpanan order.

Kode Fail-Safe (Metode MU-Plugin)

Salah satu cara memasang kode 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);

Apa yang dilakukan kode ini?

Bayangkan dropdown tindakan massal sebagai daftar pekerjaan yang bisa dipilih staf untuk beberapa pesanan. Kode ini menyisipkan pilihan mengubah status menjadi processing dan completed ke daftar itu. Ia tidak memberi izin baru kepada user dan tidak memperbaiki setiap penyebab checkbox hilang.

Filter yang digunakan mengarah ke layar pesanan WooCommerce HPOS. HPOS adalah penyimpanan order pada tabel khusus WooCommerce. Layar order legacy menggunakan ID layar yang berbeda; karena itu, identifikasi layar yang sedang digunakan sebelum menilai hasilnya. Rujuk panduan HPOS WooCommerce.

Pada kode ini, pencocokan role menentukan siapa yang mendapat tambahan action. User dengan role shop manager termasuk sasaran; akun yang memiliki beberapa role juga perlu diperiksa. Kedua pilihan ditulis kembali, bukan hanya ketika seluruh daftar kosong. Prioritas filter 9999 membuat callback berjalan belakangan dibanding prioritas lebih rendah, tetapi callback lain masih dapat berjalan setelahnya.

Cara memeriksa hasil tanpa mengganggu pesanan pelanggan

Coba pada salinan toko atau lingkungan pengujian terlebih dahulu, memakai akun dengan role yang sama dengan staf yang mengalami masalah. Pastikan kedua pilihan muncul dan perubahan status benar-benar diizinkan. Mengubah status order dapat memicu email atau proses lain, jadi gunakan pesanan uji yang aman.

Jika dropdown tetap tidak muncul, periksa plugin pengubah tampilan, permission, dan layar order yang dipakai. Jangan langsung menonaktifkan HPOS hanya untuk mengejar gejala di antarmuka. Dokumentasi filter bulk actions WordPress membantu menjelaskan hubungan nama filter dengan ID layar.

Untuk menghentikan penyesuaian ini, keluarkan file MU-plugin dari foldernya. Tindakan tersebut tidak membatalkan perubahan status pesanan yang sudah terjadi. MU-plugin juga tidak dinonaktifkan lewat daftar plugin biasa; mekanismenya dijelaskan dalam dokumentasi WordPress.

Untuk toko yang diwarisi dari developer sebelumnya, perbaikan kecil seperti ini sebaiknya disertai catatan penyebab, lokasi kode, dan cara mengujinya. Tim berikutnya perlu dapat melanjutkan pekerjaan tanpa menebak-nebak. Jika sumber penyesuaian berbentuk shortcode, Shortcode Hunter dapat membantu penelusuran awal.

Diperbarui

Sumber dan dokumentasi

Laporkan koreksi atau informasi yang sudah berubah

Selesai membaca. Kembali ke atas
Semua catatan
  1. 01

    Cara Melacak Asal-Usul File Source Code Shortcode WordPress

    Telusuri fungsi shortcode memakai MU-plugin Shortcode Hunter. Pahami Reflection PHP, hasil scan, perbedaan request dan batas diagnosisnya.

    Baca catatan
  2. 02

    Website Kena Malware? Bersihkan Sumbernya, Bukan Hanya Gejalanya

    Jasa malware removal untuk WordPress, WooCommerce, VPS, dan website self-hosted lain. Kenali redirect judi, Japanese keyword hack, akun asing, dan risiko checkout.

    Baca catatan