true );
public $wc_cart_url;
public $wc_cart_count_html;
public $wc_cart_link_attributes;
public $display_widget;
private static $_woocart_filter_added;
private static $_woocart_style_printed;
public function __construct( $model ) {
parent::__construct( $model);
//This filter should be added once only.
//There might be various instances of this object but we don't want it to be added more than once
if ( empty( self::$_woocart_filter_added ) ) {
self::$_woocart_filter_added = true;
add_filter( 'woocommerce_add_to_cart_fragments', array( $this, 'czr_fn_woocommerce_add_to_cart_fragment' ) );
}
// fix for: https://github.com/presscustomizr/customizr/issues/1223
// WC_Cart::get_cart_url is deprecated since version 2.5! Use wc_get_cart_url instead.
//
if ( function_exists( 'wc_get_cart_url' ) ) {
$this->wc_cart_url = esc_url( wc_get_cart_url() );
} else if ( function_exists( 'WC' ) ) {
$this->wc_cart_url = esc_url( WC()->cart->get_cart_url() );
}
}
/*
* Fired just before the view is rendered
* @hook: pre_rendering_view_{$this -> id}, 9999
*/
public function czr_fn_setup_late_properties() {
//display_widget
if ( $this->display_widget ) {
$display_widget = function_exists( 'czr_fn_wc_is_checkout_cart' ) ? ! czr_fn_wc_is_checkout_cart() : true;
} else {
$display_widget = false;
}
$wc_cart_count_html = $this->czr_fn__get_wc_cart_count_html();
$wc_cart_link_attributes = $display_widget ? 'data-toggle="czr-dropdown"' : '';
$this->czr_fn_update( compact( 'display_widget', 'wc_cart_count_html', 'wc_cart_link_attributes' ) );
}
// Ensure cart contents update when products are added to the cart via AJAX (place the following in functions.php)
function czr_fn_woocommerce_add_to_cart_fragment( $fragments ) {
$fragments['sup.czr-wc-count'] = $this -> czr_fn__get_wc_cart_count_html();
return $fragments;
}
function czr_fn__get_wc_cart_count_html() {
if ( ! function_exists( 'WC' ) )
return;
$WC = WC();
$_cart_count = $WC->cart->get_cart_contents_count();
return sprintf( '%1$s', $_cart_count ? $_cart_count : '' );
}
/**
* @hook czr_fn_user_options_style
*/
function czr_fn_user_options_style_cb( $_css ) {
//This css should be added once only.
//There might be various instances of this object but we don't want it to be added more than once
if ( empty( self::$_woocart_style_printed ) ) {
self::$_woocart_style_printed = true;
return sprintf( "%s\n%s",
$_css,
".sticky-enabled .czr-wccart-off .primary-nav__woocart { display: none; }
.logo-center .primary-nav__woocart .dropdown-menu,
.logo-left .primary-nav__woocart .dropdown-menu{ right: 0; left: auto; }/*open left*/
");
}
return $_css;
}/*end rendering the cart icon in the header */
}//end class