Saya ingin memodifikasi fungsi dalam sebuah plugin. Ini dinyatakan dalam file utama plugin seperti ini:
class WCPGSK_Main {
...
public function wcpgsk_email_after_order_table($order) {
...
}
}
Tambahkan dipanggil dari sana seperti ini:
add_action( 'woocommerce_email_after_order_table', array($this, 'wcpgsk_email_after_order_table') );
Saya kira akan mungkin untuk menggantinya jika memiliki akses ke kelas di functions.php. Maka saya akan dapat menulis sesuatu seperti ini:
$wcpgsk = new WCPGSK_Main;
remove_action( 'woocommerce_email_after_order_table', array($wcpgsk, 'wcpgsk_email_after_order_table') );
function customized_wcpgsk_email_after_order_table($order) {
...
}
add_action( 'woocommerce_email_after_order_table', array($wcpgsk, 'customized_wcpgsk_email_after_order_table') );
Pemikiran saya untuk mendapatkan akses ke kelas dalam file functions.php adalah untuk memasukkan file di mana kelas dideklarasikan dalam functions.php:
require_once('/wp-content/plugins/woocommerce-poor-guys-swiss-knife/woocommerce-poor-guys-swiss-knife.php');
$wcpgsk = new WCPGSK_Main;
...
Tapi ini tidak berfungsi karena file plugin dimasukkan ketika plugin diinisialisasi di WordPress, saya kira.
Apakah ada cara untuk menulis ulang fungsi tanpa menyentuh file plugin?