add-to-cart
4 years ago
additional-information
4 years ago
advanced-search
4 years ago
archive-description
5 years ago
archive-products
4 years ago
archive-result-count
4 years ago
archive-title
4 years ago
archive-view-mode
4 years ago
breadcrumbs
4 years ago
cart-table
4 years ago
cart-totals
4 years ago
checkout-coupon-form
4 years ago
checkout-form-additional
4 years ago
checkout-form-billing
4 years ago
checkout-form-login
4 years ago
checkout-form-shipping
4 years ago
checkout-payment
4 years ago
checkout-review-order
4 years ago
checkout-shipping-methods
4 years ago
cross-sells
4 years ago
deal-products
4 years ago
empty-cart-message
4 years ago
filter-orderby
4 years ago
filter-products-per-page
4 years ago
filterable-product-list
4 years ago
init
4 years ago
notice
4 years ago
product-categories
5 years ago
product-category-lists
4 years ago
product-description
4 years ago
product-excerpt
4 years ago
product-image
4 years ago
product-list
4 years ago
product-meta
4 years ago
product-price
4 years ago
product-rating
4 years ago
product-review
4 years ago
product-share
4 years ago
product-sku
5 years ago
product-stock
4 years ago
product-tabs
4 years ago
product-tags
5 years ago
product-title
4 years ago
recently-viewed-products
4 years ago
related
4 years ago
return-to-shop
4 years ago
up-sells
4 years ago
view-single-product
4 years ago
lazy-cache.php
4 years ago
manifest.php
5 years ago
prod-short-code.php
5 years ago
products.php
4 years ago
shop.php
5 years ago
widget-helper.php
4 years ago
prod-short-code.php
65 lines
| 1 | <?php |
| 2 | |
| 3 | namespace ShopEngine\Widgets; |
| 4 | |
| 5 | |
| 6 | class Prod_Short_Code extends \WC_Shortcode_Products { |
| 7 | |
| 8 | public function __construct($settings = array(), $type = 'products') { |
| 9 | |
| 10 | $this->settings = $settings; |
| 11 | $this->type = $type; |
| 12 | |
| 13 | $this->attributes = $this->parse_attributes([ |
| 14 | 'columns' => $settings['shopengine_columns'], |
| 15 | 'rows' => $settings['shopengine_rows'], |
| 16 | 'paginate' => $settings['shopengine_paginate'], |
| 17 | 'cache' => false, |
| 18 | ]); |
| 19 | |
| 20 | $this->query_args = $this->parse_query_args(); |
| 21 | } |
| 22 | |
| 23 | |
| 24 | protected function parse_query_args() { |
| 25 | |
| 26 | $query_args = [ |
| 27 | 'post_type' => 'product', |
| 28 | 'post_status' => 'publish', |
| 29 | 'ignore_sticky_posts' => true, |
| 30 | 'no_found_rows' => false === wc_string_to_bool($this->attributes['paginate']), |
| 31 | ]; |
| 32 | |
| 33 | $settings = $this->settings; |
| 34 | |
| 35 | if($settings['shopengine_paginate'] === 'yes') { |
| 36 | |
| 37 | $page = empty( $_GET['product-page'] ) ? 1 : absint($_GET['product-page']); |
| 38 | |
| 39 | if ($page > 1) { |
| 40 | $query_args['paged'] = $page; |
| 41 | } |
| 42 | |
| 43 | $ord_arg = WC()->query->get_catalog_ordering_args(); |
| 44 | |
| 45 | $query_args['orderby'] = $ord_arg['orderby']; |
| 46 | $query_args['order'] = $ord_arg['order']; |
| 47 | } |
| 48 | |
| 49 | |
| 50 | $query_args['fields'] = 'ids'; |
| 51 | $query_args['post_type'] = 'product'; |
| 52 | $query_args['posts_per_page'] = intval($settings['shopengine_columns'] * $settings['shopengine_rows']); |
| 53 | |
| 54 | |
| 55 | return $query_args; |
| 56 | } |
| 57 | |
| 58 | |
| 59 | protected function get_query_results() { |
| 60 | |
| 61 | $results = parent::get_query_results(); |
| 62 | |
| 63 | return $results; |
| 64 | } |
| 65 | } |