Ich möchte ein benutzerdefiniertes Widget für WooCommerce Mini Cart erstellen, aber auch das standardmäßige Mini Cart-Widget von WC beibehalten, also möchte ich nicht, dass eine Vorlage überschrieben wird, indem mini-cart.php in mein Design kopiert wird. Ich habe gerade die Widget-Klasse aus dem Widget-Verzeichnis des Plugins kopiert (plugins/woocommerce/includes/widgets/class-wc-widget-cart.php) und auch eine neue Vorlagendatei für den Mini-Warenkorb erstellt, indem ich den Standardcode von mini-cart.php kopiert habe in einer Datei unter dem Verzeichnis meines Themas, zB custom-mini-cart.php, die nur eine modifizierte Version der Kerndatei ist. Jetzt möchte ich diese Vorlagendatei für mein Widget laden. Die von mir verwendete Widget-Klasse ist, wie Sie sehen können, der Klasse des Kern-Widgets sehr ähnlich:
class WC_Dropdown_Cart extends WC_Widget {
public function __construct() {
$this->widget_cssclass="woocommerce widget_shopping_cart";
$this->widget_description = __( "Custom Mini Cart", 'woocommerce' );
$this->widget_name = __( 'Custom Mini Cart', 'woocommerce' );
$this->widget_id = 'woocommerce_widget_custom_mini_cart';
$this->settings = array(
'title' => array(
'type' => 'text',
'std' => __( 'Cart', 'woocommerce' ),
'label' => __( 'Title', 'woocommerce' )
),
'hide_if_empty' => array(
'type' => 'checkbox',
'std' => 0,
'label' => __( 'Hide if cart is empty', 'woocommerce' )
)
);
parent::__construct();
}
function widget( $args, $instance ) {
if ( is_cart() || is_checkout() ) {
return;
}
$hide_if_empty = empty( $instance['hide_if_empty'] ) ? 0 : 1;
$this->widget_start( $args, $instance );
if ( $hide_if_empty ) {
echo '<div class="hide_cart_widget_if_empty">';
}
// Insert cart widget placeholder - code in woocommerce.js will update this on page load
echo '<div class="widget_shopping_cart_content"></div>';
if ( $hide_if_empty ) {
echo '</div>';
}
$this->widget_end( $args );
}
}
Der Punkt, an dem WooCommerce diese Datei innerhalb der Widget-Funktion der Klasse aufruft, ist:
echo '<div class="widget_shopping_cart_content"></div>';
aber WooCommerce macht es auf eine Javascript-Weise, die ich nicht umgehen kann. Was sind die Schritte, um es hier zu tun?