J'essaie de modifier la tête et le pied de mes pages WooCommerce. J'ai une if
déclaration qui est censée cibler la boutique et le panier de WooCommerce, mais ce n'est pas le cas. Si je modifie le PHP après la if
déclaration, rien ne change. Mais si je modifie le PHP dans la else
déclaration, cela fonctionne:
Cela ne fonctionne pas:
<?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 ?>
Cela fonctionne:
<?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 ?>
Je pense que la fonction WooCommerce n'est peut-être pas correctement définie, car cela fonctionne également:
<?php if (is_cart() || is_shop()): ?>
<?php get_template_part('inc/header-shop'); ?>
<?php else: ?>
<?php get_template_part('inc/page-header'); ?>
<?php endif ?>
la source
if( function_exists( 'WC' ) )
, mais il est plus précis d'avoir le nom du plugin dans la vérification de classe, comme vous l'avez suggéré ;-)WC()
existe , j'essayais simplement de trouver un moyen plus court en me référant à elle ;-) Je suppose que ce serait plus précis avecif( function_exists( 'WC' ) && is_object( WC() ) && is_a( WC(), 'WooCommerce' ) )
;-). En parallèle, nous pourrions également tester des constantes (par exempleWOOCOMMERCE_VERSION
) ou des actions (par exempledid_action( 'woocommerce_loaded' )
) ;-) @ialocincheck_for_woocommerce()
fonction, et l'enregistrer avecadd_action('plugins_loaded', 'check_for_woocommerce');
De nombreux plugins WooCommerce officiels résolvent ce problème en vérifiant la
WC_VERSION
constante, que WooCommerce définit, une fois que tous les plugins ont été chargés. Code simplifié:Le bonus supplémentaire est que vous pouvez utiliser PHP
version_compare()
pour vérifier davantage si une nouvelle version suffisante de WooCommerce est installée (si votre code nécessite des capacités spécifiques), car la constante WC_VERSION convient à cela.la source
Pour améliorer les réponses données, nous utilisons ceci:
Cela évite deux problèmes:
if ( in_array( 'woocommerce/woocommerce.php', apply_filters(...
cela ne fonctionne pas.if ( class_exists( 'WooCommerce' ) ) { .. }
cela ne fonctionne pas.la source
J'ai trouvé cela utile dans la documentation du développeur WooCommerce.
Vous pouvez simplement appeler la
is_woocommerce_active()
fonction dans votre fichier plugin.Exemple
is_woocommerce_active défini comme ci-dessous selon la documentation woo
la source
Vous pouvez envelopper votre plugin dans une vérification pour voir si WooCommerce est installé et actif ou non:
la source