Ich versuche, Kopf und Fuß meiner WooCommerce-Seiten zu ändern. Ich habe eine if
Erklärung, die auf den Shop und den Warenkorb von WooCommerce abzielen soll, aber nicht. Wenn ich das PHP nach der if
Anweisung ändere, ändert sich nichts. Aber wenn ich das PHP in der else
Anweisung ändere, funktioniert es:
Das funktioniert nicht:
<?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 ?>
Das funktioniert:
<?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 ?>
Ich denke, die Funktion WooCommerce ist möglicherweise nicht richtig definiert, da dies auch funktioniert:
<?php if (is_cart() || is_shop()): ?>
<?php get_template_part('inc/header-shop'); ?>
<?php else: ?>
<?php get_template_part('inc/page-header'); ?>
<?php endif ?>
quelle
if( function_exists( 'WC' ) )
, aber es ist genauer, den Plugin-Namen in der Klassenprüfung zu haben, wie Sie vorgeschlagen haben ;-)WC()
existiert diese Funktion , ich habe nur versucht, einen kürzeren Weg zu finden, indem ich mich darauf bezog ;-) Ich denke, es wäre genauer mitif( function_exists( 'WC' ) && is_object( WC() ) && is_a( WC(), 'WooCommerce' ) )
;-). Mitspielen könnten wir auch auf Konstanten (zBWOOCOMMERCE_VERSION
) oder Aktionen (zBdid_action( 'woocommerce_loaded' )
) testencheck_for_woocommerce()
Funktion einwickeln und beiadd_action('plugins_loaded', 'check_for_woocommerce');
Viele der offiziellen WooCommerce-Plugins lösen dieses Problem, indem sie nach dem
WC_VERSION
Laden aller Plugins nach der von WooCommerce definierten Konstante suchen. Vereinfachter Code:Der zusätzliche Bonus besteht darin, dass Sie mithilfe
version_compare()
von PHPs weiter prüfen können, ob eine ausreichend neue Version von WooCommerce installiert ist (wenn für Ihren Code bestimmte Funktionen erforderlich sind), da die Konstante WC_VERSION dafür geeignet ist.quelle
Um die gegebenen Antworten zu verbessern, verwenden wir Folgendes:
Dies verhindert zwei Probleme:
if ( in_array( 'woocommerce/woocommerce.php', apply_filters(...
funktioniert es nicht.if ( class_exists( 'WooCommerce' ) ) { .. }
funktioniert dies nicht.quelle
Ich fand dies nützlich aus der WooCommerce-Entwicklerdokumentation.
Sie können einfach die
is_woocommerce_active()
Funktion in Ihrer Plugin-Datei aufrufen .Beispiel
is_woocommerce_active wie in der woo-Dokumentation definiert
quelle
Sie können Ihr Plugin in eine Überprüfung einwickeln, um festzustellen, ob WooCommerce installiert und aktiv ist oder nicht:
quelle