Artikel ini meneroka cangkuk dan penapis WordPress, alat yang kuat untuk menyesuaikan plugin dan tema. Pemaju boleh menggunakannya untuk menambah fungsi tersuai pada titik tertentu dalam operasi WordPress.
Konsep Utama:
remove_action
Fungsi ini menghilangkan cangkuk dan penapis standard. Ia memerlukan nama cangkuk, fungsi untuk dikeluarkan, dan keutamaan fungsi.
remove_action
Banyak plugin dan tema menggunakan prinsip pengaturcaraan berorientasikan objek (OOP), menentukan fungsi dalam kelas. Mengeluarkan atau menggantikan cangkuk dalam kelas ini memberikan cabaran yang unik.
Mengeluarkan cangkuk standard:
Mengeluarkan cangkuk di luar kelas agak mudah menggunakan fungsi . Fungsi ini memerlukan:
remove_action
$tag
: Fungsi untuk dikeluarkan. $function_to_remove
: Keutamaan fungsi apabila ditambah. $priority
do_action
add_action
Contoh: WooCommerce serbuk roti
bar breadcrumb WooCommerce, dipaparkan melalui , boleh dikeluarkan:
do_action( 'woocommerce_before_main_content' );
remove_action('woocommerce_before_main_content', 'woocommerce_breadcrumb', 20);
Mengeluarkan cangkuk dalam kelas lebih kompleks. Pembolehubah kelas mesti diluluskan kepada :
remove_action('woocommerce_before_main_content', 'woocommerce_breadcrumb', 20);
Mencari objek kelas adalah penting. Untuk kelas singleton, gunakan kaedah seperti MyClass::getInstance()
. Jika tidak, cuba mengaksesnya secara global (mis., global $myClassObject
). Memeriksa unsur -unsur dan mengesan kembali ke fungsi yang berkaitan dapat membantu mengenal pasti cangkuk dan fungsi.
Contoh: e -mel wooCommerce
kelas WC_Emails
dalam WooCommerce mengendalikan generasi e -mel. Untuk mengalih keluar butiran pelanggan dari e -mel:
remove_action('hook_name', array($myclass, 'my_function_remove'), 10);
Contoh: penyingkiran cangkuk kelas adat
Contoh ini menunjukkan mengeluarkan cangkuk dari kelas tersuai dalam tema induk, yang dikendalikan dalam tema kanak -kanak:
function remove_customer_email_details($instance) { remove_action('woocommerce_email_customer_details', array( $instance, 'customer_details'), 10); } add_action('woocommerce_email', 'remove_customer_email_details');
Apabila teknik ini gagal:
Jika objek kelas tidak dapat diakses, pertimbangkan:
Atas ialah kandungan terperinci Menggali lebih mendalam ke dalam cangkuk dan penapis WordPress. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!