public static function instance() { if (!self::$instance) { self::$instance = new WC_Catalog_Restrictions_Filters(); } return self::$instance; }
public function __construct() { define('WOOCOMMERCE_CATALOG_RESTRICTIONS_VERSION', $this->version); $this->template_url = apply_filters('woocommerce_catalog_restrictions_template_url', 'woocommerce-catalog-visibility-options/'); require 'woocommerce-catalog-restrictions-functions.php'; require 'shortcodes/class-wc-catalog-restrictions-location-picker-shortcode.php'; require 'widgets/class-wc-catalog-restrictions-location-picker-widget.php'; WC_Catalog_Restrictions_Location_Picker_ShortCode::instance(); WC_Catalog_Restrictions_Location_Picker_Widget::register(); if (is_admin()) { require 'classes/class-wc-catalog-restrictions-product-admin.php'; require 'classes/class-wc-catalog-restrictions-category-admin.php'; WC_Catalog_Restrictions_Product_Admin::instance(); WC_Catalog_Restrictions_Category_Admin::instance(); if ($this->get_setting('_wc_restrictions_locations_enabled', 'no') == 'yes') { require 'classes/class-wc-catalog-restrictions-user-admin.php'; WC_Catalog_Restrictions_User_Admin::instance(); } } else { add_action('woocommerce_init', array($this, 'on_init')); require 'classes/class-wc-catalog-restrictions-query.php'; require 'classes/class-wc-catalog-restrictions-filters.php'; WC_Catalog_Restrictions_Query::instance(); WC_Catalog_Restrictions_Filters::instance(); //load after woocommerce if ($this->get_setting('_wc_restrictions_locations_enabled', 'no') == 'yes') { add_filter('template_redirect', array(&$this, 'template_redirect'), 999); } } if (is_admin() && !defined('DOING_AJAX')) { require 'woocommerce-catalog-restrictions-installer.php'; $this->install(); add_action('admin_init', array($this, 'on_admin_init')); } //Setup Hooks to clear transients when a post is saved, a category is saved, a user changes their location, a user is updated, a user logs on / out. add_action('save_post', array(&$this, 'clear_transients')); add_action('created_term', array(&$this, 'clear_transients')); add_action('edit_term', array(&$this, 'clear_transients')); add_action('edit_user_profile_update', array(&$this, 'clear_transients')); add_action('user_register', array(&$this, 'clear_session_transients')); add_action('wp_login', array(&$this, 'clear_session_transients')); add_action('wp_logout', array(&$this, 'clear_session_transients')); add_action('wc_restrictions_location_updated', array(&$this, 'clear_session_transients')); add_action('wc_restrictions_location_updated', array($this, 'maybe_clear_cart')); }
<?php $out_of_stock = sprintf( '<a class="out-of-stock" title="%s">%s</a>', $label, $label ); ?> <?php } else { ?> <?php $add_to_cart = ''; $out_of_stock = ''; // plugin catalog mode fix if ( is_catalog_mode_installed() && ( !WC_Catalog_Restrictions_Filters::instance()->user_can_purchase( $product ) ) ) { global $wc_cvo; // add to cart alternative text $label = wptexturize($wc_cvo->setting('wc_cvo_atc_text')); if (!empty($label)) { $link = get_permalink($product->ID); $link_add=sprintf('<a href="%s" data-product_id="%s" class="button product_type_%s">%s</a>', $link, $product->id, $product->product_type, $label); $add_to_cart = $link_add; } }
public function on_wishlist_user_can_purcahse($result, $product) { return $result & WC_Catalog_Restrictions_Filters::instance()->user_can_purchase($product); }
/** * Add the pricing calculator and quantity input if the user can view the price * * @since 3.7.0 */ public function catalog_visibility_options_pricing_calculator_quantity_input() { global $product; // bail if the calculator is not enabled for this product if (!$product || !WC_Price_Calculator_Product::calculator_enabled($product)) { return; } // bail if current user can't view the price if (class_exists('WC_Catalog_Restrictions_Filters') && !WC_Catalog_Restrictions_Filters::instance()->user_can_view_price($product)) { return; } // render pricing calculator wc_measurement_price_calculator()->get_product_page_instance()->render_price_calculator(); // render quantity input if (!$product->is_sold_individually()) { woocommerce_quantity_input(array('min_value' => apply_filters('woocommerce_quantity_input_min', 1, $product), 'max_value' => apply_filters('woocommerce_quantity_input_max', $product->backorders_allowed() ? '' : $product->get_stock_quantity(), $product))); } }