171 lines
4.4 KiB
PHP
171 lines
4.4 KiB
PHP
<?php
|
|
/**
|
|
* @author ThemePunch <info@themepunch.com>
|
|
* @link http://www.themepunch.com/
|
|
* @copyright 2015 ThemePunch
|
|
*/
|
|
|
|
if( !defined( 'ABSPATH') ) exit();
|
|
|
|
class RevSliderWooCommerce{
|
|
|
|
const ARG_REGULAR_PRICE_FROM = "reg_price_from";
|
|
const ARG_REGULAR_PRICE_TO = "reg_price_to";
|
|
const ARG_SALE_PRICE_FROM = "sale_price_from";
|
|
const ARG_SALE_PRICE_TO = "sale_price_to";
|
|
const ARG_IN_STOCK_ONLY = "instock_only";
|
|
const ARG_FEATURED_ONLY = "featured_only";
|
|
|
|
const META_REGULAR_PRICE = "_regular_price";
|
|
const META_SALE_PRICE = "_sale_price";
|
|
const META_SKU = "_sku"; //can be 'instock' or 'outofstock'
|
|
const META_STOCK = "_stock"; //can be 'instock' or 'outofstock'
|
|
|
|
|
|
const SORTBY_NUMSALES = "meta_num_total_sales";
|
|
const SORTBY_REGULAR_PRICE = "meta_num__regular_price";
|
|
const SORTBY_SALE_PRICE = "meta_num__sale_price";
|
|
const SORTBY_FEATURED = "meta__featured";
|
|
const SORTBY_SKU = "meta__sku";
|
|
const SORTBY_STOCK = "meta_num_stock";
|
|
|
|
/**
|
|
*
|
|
* return true / false if the woo commerce exists
|
|
*/
|
|
public static function isWooCommerceExists(){
|
|
|
|
if(class_exists( 'Woocommerce' ))
|
|
return(true);
|
|
|
|
return(false);
|
|
}
|
|
|
|
|
|
/**
|
|
* compare wc current version to given version
|
|
*/
|
|
public static function version_check( $version = '1.0' ) {
|
|
if(self::isWooCommerceExists()){
|
|
global $woocommerce;
|
|
if(version_compare($woocommerce->version, $version, '>=')){
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* get wc post types
|
|
*/
|
|
public static function getCustomPostTypes(){
|
|
$arr = array();
|
|
$arr["product"] = __("Product", 'revslider');
|
|
$arr["product_variation"] = __("Product Variation", 'revslider');
|
|
|
|
return($arr);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* get price query
|
|
*/
|
|
private static function getPriceQuery($priceFrom, $priceTo, $metaTag){
|
|
|
|
if(empty($priceFrom))
|
|
$priceFrom = 0;
|
|
|
|
if(empty($priceTo))
|
|
$priceTo = 9999999999;
|
|
|
|
$query = array( 'key' => $metaTag,
|
|
'value' => array( $priceFrom, $priceTo),
|
|
'type' => 'numeric',
|
|
'compare' => 'BETWEEN');
|
|
|
|
return($query);
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* get meta query for filtering woocommerce posts.
|
|
*/
|
|
public static function getMetaQuery($args){
|
|
|
|
$regPriceFrom = RevSliderFunctions::getVal($args, self::ARG_REGULAR_PRICE_FROM);
|
|
$regPriceTo = RevSliderFunctions::getVal($args, self::ARG_REGULAR_PRICE_TO);
|
|
|
|
$salePriceFrom = RevSliderFunctions::getVal($args, self::ARG_SALE_PRICE_FROM);
|
|
$salePriceTo = RevSliderFunctions::getVal($args, self::ARG_SALE_PRICE_TO);
|
|
|
|
$inStockOnly = RevSliderFunctions::getVal($args, self::ARG_IN_STOCK_ONLY);
|
|
$featuredOnly = RevSliderFunctions::getVal($args, self::ARG_FEATURED_ONLY);
|
|
|
|
$arrQueries = array();
|
|
$tax_query = array();
|
|
|
|
//get regular price array
|
|
if(!empty($regPriceFrom) || !empty($regPriceTo)){
|
|
$arrQueries[] = self::getPriceQuery($regPriceFrom, $regPriceTo, self::META_REGULAR_PRICE);
|
|
}
|
|
|
|
//get sale price array
|
|
if(!empty($salePriceFrom) || !empty($salePriceTo)){
|
|
$arrQueries[] = self::getPriceQuery($salePriceFrom, $salePriceTo, self::META_SALE_PRICE);
|
|
}
|
|
|
|
if($inStockOnly == "on"){
|
|
$tax_query[] = array(
|
|
'taxonomy' => 'product_visibility',
|
|
'field' => 'name',
|
|
'terms' => 'outofstock',
|
|
'operator' => 'NOT IN',
|
|
);
|
|
}
|
|
|
|
if($featuredOnly == "on"){
|
|
$tax_query[] = array(
|
|
'taxonomy' => 'product_visibility',
|
|
'field' => 'name',
|
|
'terms' => 'featured',
|
|
);
|
|
}
|
|
|
|
|
|
$query = array();
|
|
if(!empty($arrQueries)){
|
|
$query = array("meta_query"=>$arrQueries);
|
|
}
|
|
|
|
if(!empty($tax_query)){
|
|
$query['tax_query'] = $tax_query;
|
|
}
|
|
|
|
return($query);
|
|
}
|
|
|
|
|
|
/**
|
|
*
|
|
* get sortby function including standart wp sortby array
|
|
*/
|
|
public static function getArrSortBy(){
|
|
|
|
$arrSortBy = array();
|
|
$arrSortBy[self::SORTBY_REGULAR_PRICE] = __("Regular Price", 'revslider');
|
|
$arrSortBy[self::SORTBY_SALE_PRICE] = __("Sale Price", 'revslider');
|
|
$arrSortBy[self::SORTBY_NUMSALES] = __("Number Of Sales", 'revslider');
|
|
$arrSortBy[self::SORTBY_FEATURED] = __("Featured Products", 'revslider');
|
|
$arrSortBy[self::SORTBY_SKU] = __("SKU", 'revslider');
|
|
$arrSortBy[self::SORTBY_STOCK] = __("Stock Quantity", 'revslider');
|
|
|
|
return($arrSortBy);
|
|
}
|
|
|
|
|
|
} //end of the class
|
|
|
|
?>
|