80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Class for parameter-based Product querying
 | |
|  *
 | |
|  * Args and usage: https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query
 | |
|  *
 | |
|  * @package  WooCommerce\Classes
 | |
|  * @version  3.2.0
 | |
|  * @since    3.2.0
 | |
|  */
 | |
| 
 | |
| defined( 'ABSPATH' ) || exit;
 | |
| 
 | |
| /**
 | |
|  * Product query class.
 | |
|  */
 | |
| class WC_Product_Query extends WC_Object_Query {
 | |
| 
 | |
| 	/**
 | |
| 	 * Valid query vars for products.
 | |
| 	 *
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	protected function get_default_query_vars() {
 | |
| 		return array_merge(
 | |
| 			parent::get_default_query_vars(),
 | |
| 			array(
 | |
| 				'status'            => array( 'draft', 'pending', 'private', 'publish' ),
 | |
| 				'type'              => array_merge( array_keys( wc_get_product_types() ) ),
 | |
| 				'limit'             => get_option( 'posts_per_page' ),
 | |
| 				'include'           => array(),
 | |
| 				'date_created'      => '',
 | |
| 				'date_modified'     => '',
 | |
| 				'featured'          => '',
 | |
| 				'visibility'        => '',
 | |
| 				'sku'               => '',
 | |
| 				'price'             => '',
 | |
| 				'regular_price'     => '',
 | |
| 				'sale_price'        => '',
 | |
| 				'date_on_sale_from' => '',
 | |
| 				'date_on_sale_to'   => '',
 | |
| 				'total_sales'       => '',
 | |
| 				'tax_status'        => '',
 | |
| 				'tax_class'         => '',
 | |
| 				'manage_stock'      => '',
 | |
| 				'stock_quantity'    => '',
 | |
| 				'stock_status'      => '',
 | |
| 				'backorders'        => '',
 | |
| 				'low_stock_amount'  => '',
 | |
| 				'sold_individually' => '',
 | |
| 				'weight'            => '',
 | |
| 				'length'            => '',
 | |
| 				'width'             => '',
 | |
| 				'height'            => '',
 | |
| 				'reviews_allowed'   => '',
 | |
| 				'virtual'           => '',
 | |
| 				'downloadable'      => '',
 | |
| 				'category'          => array(),
 | |
| 				'tag'               => array(),
 | |
| 				'shipping_class'    => array(),
 | |
| 				'download_limit'    => '',
 | |
| 				'download_expiry'   => '',
 | |
| 				'average_rating'    => '',
 | |
| 				'review_count'      => '',
 | |
| 			)
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Get products matching the current query vars.
 | |
| 	 *
 | |
| 	 * @return array|object of WC_Product objects
 | |
| 	 */
 | |
| 	public function get_products() {
 | |
| 		$args    = apply_filters( 'woocommerce_product_object_query_args', $this->get_query_vars() );
 | |
| 		$results = WC_Data_Store::load( 'product' )->query( $args );
 | |
| 		return apply_filters( 'woocommerce_product_object_query', $results, $args );
 | |
| 	}
 | |
| }
 |