Saya mencoba mengubah kepala dan kaki halaman WooCommerce saya. Saya memiliki if
pernyataan yang seharusnya menargetkan toko dan gerobak WooCommerce, tetapi tidak. Jika saya memodifikasi PHP setelah if
pernyataan tidak ada perubahan. Tetapi jika saya memodifikasi PHP dalam else
pernyataan itu berfungsi:
Ini tidak berfungsi:
<?php if (function_exists('woocommerce')): ?>
<?php if (is_cart() || is_shop()): ?>
<?php get_template_part('inc/CHANGE'); ?>
<?php endif ?>
<?php else: ?>
<?php get_template_part('inc/page-header'); ?>
<?php endif ?>
Ini berhasil:
<?php if (function_exists('woocommerce')): ?>
<?php if (is_cart() || is_shop()): ?>
<?php get_template_part('inc/page-header'); ?>
<?php endif ?>
<?php else: ?>
<?php get_template_part('inc/CHANGE'); ?>
<?php endif ?>
Saya pikir fungsi WooCommerce mungkin tidak didefinisikan dengan benar, karena ini juga berfungsi:
<?php if (is_cart() || is_shop()): ?>
<?php get_template_part('inc/header-shop'); ?>
<?php else: ?>
<?php get_template_part('inc/page-header'); ?>
<?php endif ?>
sumber
if( function_exists( 'WC' ) )
, tetapi lebih akurat untuk memiliki nama plugin di cek kelas, seperti yang Anda sarankan ;-)WC()
ada , saya hanya mencoba mencari cara yang lebih singkat dengan merujuknya ;-) Saya kira itu akan lebih akurat denganif( function_exists( 'WC' ) && is_object( WC() ) && is_a( WC(), 'WooCommerce' ) )
;-). Bermain bersama, kita juga bisa menguji konstanta (mis.WOOCOMMERCE_VERSION
) Atau aksi (misdid_action( 'woocommerce_loaded' )
) ;-) @ialocincheck_for_woocommerce()
fungsi, dan mendaftarkannya denganadd_action('plugins_loaded', 'check_for_woocommerce');
Banyak plugin WooCommerce resmi menyelesaikan masalah ini dengan memeriksa
WC_VERSION
konstanta, yang didefinisikan oleh WooCommerce, setelah semua plugin dimuat. Kode sederhana:Bonus tambahannya adalah Anda dapat menggunakan PHP
version_compare()
untuk memeriksa lebih lanjut apakah versi WooCommerce yang cukup baru diinstal (jika kode Anda memerlukan kemampuan khusus), karena konstanta WC_VERSION cocok untuk ini.sumber
Untuk meningkatkan jawaban yang diberikan, kami menggunakan ini:
Ini mencegah dua masalah:
if ( in_array( 'woocommerce/woocommerce.php', apply_filters(...
ini tidak berfungsi.if ( class_exists( 'WooCommerce' ) ) { .. }
ini tidak berfungsi.sumber
Saya menemukan ini berguna dari dokumentasi pengembang WooCommerce.
Anda cukup memanggil
is_woocommerce_active()
fungsi di dalam file plugin Anda.Contoh
is_woocommerce_active didefinisikan seperti di bawah ini sesuai dokumentasi woo
sumber
Anda dapat membungkus plugin Anda dengan tanda centang untuk melihat apakah WooCommerce diinstal dan aktif atau tidak:
sumber