Saya sedang mengembangkan plugin Wordpress Woocommerce. Di lingkungan lokal saya berfungsi dengan baik tetapi saya memiliki masalah ketika menambahkan plugin ke replika lingkungan prod. Saya baru mengenal wordpress dan tidak terlalu mengenal web dev (saya seorang programmer Java).
Di file plugin, saya membuat instance kelas dari paket plugin Woocommerce seperti ini:
$coupon = new WC_Coupon($some_code);
Di lingkungan lokal (php 5.4.10, Woocommerce 2.0.13, Wordpress 3.6) tidak masalah. Dalam lingkungan produksi (php 5.4.10, Woocommerce 1.6.5.2, Wordpress 3.4.2) Saya memiliki kesalahan berikut:
Fatal error: Class 'WC_Coupon' not found
Saya telah mencoba memasukkan file di mana kelas WC_Coupon didefinisikan tetapi kemudian kesalahan menjadi
Fatal error: Cannot redeclare class WC_Coupon
Jadi apa cara yang tepat untuk menggunakan kelas yang dideklarasikan di plugin lain?
Catatan: meningkatkan bukanlah suatu pilihan saat ini.
plugins_loaded
itu kait yang tepat. Seseorang harus mencari kapan kelas itu tersedia dan terhubung setelah itu. Pokoknya +1register_deactivation_hook( __FILE__, 'deactivate');
. Jadi saya tidak sabar. Bisakah saya meminta wordpress untuk memuat kelas jika belum dimuat?WC_Coupon
dimuat oleh__construct
satu utamaWooCommerce
kelas (benar-benar olehincludes()
metode langsung disebut oleh__construct
) danWooCommerce
kelas instanziate (sebagai tunggal) segera setelah plugin dimuat. Demikianplugins_loaded
juga kaitan yang tepat dalam kasus ini;)class_exists( 'WC_Coupon' )
. Juga tolong sebutkan bahwa Anda menggunakan ini selama penonaktifan ... bisa menghemat waktu menjawab kerumunan banyak ...Ini sudah terlambat tetapi saya ingin berbagi cara menggunakan woocommerce dan kelas-kelasnya tanpa kelas kesalahan tidak ditemukan.
Pertama adalah memeriksa apakah woocommerce diinstal dan menggunakan
woocommerce_loaded
hook tindakan.Saya harap ini membantu seseorang.
sumber
Cara yang tepat adalah:
Lebih baik untuk memeriksa apakah kelas ada sebelum menggunakannya, itu menghindari kesalahan fatal jika plugin dinonaktifkan.
Anda tidak dapat mendeklarasikan ulang kelas yang tidak diizinkan di PHP.
Anda juga dapat memperluas kelas:
Tetapi sebagian besar waktu dan dalam hal ini dengan WooCommerce Anda sebaiknya menemukan kait dalam dokumentasi yang akan menangani pekerjaan.
sumber