'12', 'columns' => '4', 'orderby' => 'title', 'order' => 'asc', 'category' => '' ), $atts ) ); if ( ! $category ) return; $ordering_args = $woocommerce->query->get_catalog_ordering_args( $orderby, $order ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'orderby' => $ordering_args['orderby'], 'order' => $ordering_args['order'], 'posts_per_page' => $per_page, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ), 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'terms' => array( esc_attr($category) ), 'field' => 'slug', 'operator' => 'IN' ) ) ); if ( isset( $ordering_args['meta_key'] ) ) { $args['meta_key'] = $ordering_args['meta_key']; } ob_start(); $products = new WP_Query( $args ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> have_posts() ) : $products->the_post(); ?> null, 'orderby' => 'name', 'order' => 'ASC', 'columns' => '4', 'hide_empty' => 1, 'parent' => '' ), $atts ) ); if ( isset( $atts[ 'ids' ] ) ) { $ids = explode( ',', $atts[ 'ids' ] ); $ids = array_map( 'trim', $ids ); } else { $ids = array(); } $hide_empty = ( $hide_empty == true || $hide_empty == 1 ) ? 1 : 0; $args = array( 'number' => $number, 'orderby' => $orderby, 'order' => $order, 'hide_empty' => $hide_empty, 'include' => $ids, 'parent' => $parent ); $product_categories = get_terms( 'product_cat', $args ); $woocommerce_loop['columns'] = $columns; ob_start(); // Reset loop/columns globals when starting a new loop $woocommerce_loop['loop'] = $woocommerce_loop['column'] = ''; if ( $product_categories ) { woocommerce_product_loop_start(); foreach ( $product_categories as $category ) { woocommerce_get_template( 'content-product_cat.php', array( 'category' => $category ) ); } woocommerce_product_loop_end(); } woocommerce_reset_loop(); return ob_get_clean(); } /** * Recent Products shortcode * * @access public * @param array $atts * @return string */ function woocommerce_recent_products( $atts ) { global $woocommerce_loop; extract(shortcode_atts(array( 'per_page' => '12', 'columns' => '4', 'orderby' => 'date', 'order' => 'desc' ), $atts)); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ) ); ob_start(); $products = new WP_Query( $args ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> have_posts() ) : $products->the_post(); ?> '4', 'orderby' => 'title', 'order' => 'asc' ), $atts)); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'orderby' => $orderby, 'order' => $order, 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ) ); if(isset($atts['skus'])){ $skus = explode(',', $atts['skus']); $skus = array_map('trim', $skus); $args['meta_query'][] = array( 'key' => '_sku', 'value' => $skus, 'compare' => 'IN' ); } if(isset($atts['ids'])){ $ids = explode(',', $atts['ids']); $ids = array_map('trim', $ids); $args['post__in'] = $ids; } ob_start(); $products = new WP_Query( $args ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> have_posts() ) : $products->the_post(); ?> 'product', 'posts_per_page' => 1, 'no_found_rows' => 1, 'post_status' => 'publish', 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ) ); if(isset($atts['sku'])){ $args['meta_query'][] = array( 'key' => '_sku', 'value' => $atts['sku'], 'compare' => '=' ); } if(isset($atts['id'])){ $args['p'] = $atts['id']; } ob_start(); $products = new WP_Query( $args ); if ( $products->have_posts() ) : ?> have_posts() ) : $products->the_post(); ?> get_var($wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $atts['sku'])); $product_data = get_post( $product_id ); else : return; endif; if ($product_data->post_type=='product') { $product = $woocommerce->setup_product_data( $product_data ); ob_start(); ?>

get_price_html(); ?>

post_type=='product_variation') { $product = get_product( $product_data->post_parent ); $GLOBALS['product'] = $product; $variation = get_product( $product_data ); ob_start(); ?>

get_price_html(); ?> add_to_cart_url(); $label = apply_filters('add_to_cart_text', __( 'Add to cart', 'woocommerce' )); $link = add_query_arg( 'variation_id', $variation->variation_id, $link ); foreach ($variation->variation_data as $key => $data) { if ($data) $link = add_query_arg( $key, $data, $link ); } printf('%s', esc_url( $link ), $product->id, $product->product_type, $label); ?>

get_var($wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $atts['sku'])); $product_data = get_post( $product_id ); else : return; endif; if ($product_data->post_type!=='product') return; $_product = get_product( $product_data ); return esc_url( $_product->add_to_cart_url() ); } /** * List all products on sale * * @access public * @param array $atts * @return string */ function woocommerce_sale_products( $atts ){ global $woocommerce_loop, $woocommerce; extract( shortcode_atts( array( 'per_page' => '12', 'columns' => '4', 'orderby' => 'title', 'order' => 'asc' ), $atts ) ); // Get products on sale if ( false === ( $product_ids_on_sale = get_transient( 'wc_products_onsale' ) ) ) { $meta_query = array(); $meta_query[] = array( 'key' => '_sale_price', 'value' => 0, 'compare' => '>', 'type' => 'NUMERIC' ); $on_sale = get_posts(array( 'post_type' => array('product', 'product_variation'), 'posts_per_page' => -1, 'post_status' => 'publish', 'meta_query' => $meta_query, 'fields' => 'id=>parent' )); $product_ids = array_keys( $on_sale ); $parent_ids = array_values( $on_sale ); // Check for scheduled sales which have not started foreach ( $product_ids as $key => $id ) if ( get_post_meta( $id, '_sale_price_dates_from', true ) > current_time('timestamp') ) unset( $product_ids[ $key ] ); $product_ids_on_sale = array_unique( array_merge( $product_ids, $parent_ids ) ); set_transient( 'wc_products_onsale', $product_ids_on_sale ); } $product_ids_on_sale[] = 0; $meta_query = array(); $meta_query[] = $woocommerce->query->visibility_meta_query(); $meta_query[] = $woocommerce->query->stock_status_meta_query(); $args = array( 'posts_per_page'=> $per_page, 'orderby' => $orderby, 'order' => $order, 'no_found_rows' => 1, 'post_status' => 'publish', 'post_type' => 'product', 'orderby' => 'date', 'order' => 'ASC', 'meta_query' => $meta_query, 'post__in' => $product_ids_on_sale ); ob_start(); $products = new WP_Query( $args ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> have_posts() ) : $products->the_post(); ?> '12', 'columns' => '4' ), $atts ) ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $per_page, 'meta_key' => 'total_sales', 'orderby' => 'meta_value', 'meta_query' => array( array( 'key' => '_visibility', 'value' => array( 'catalog', 'visible' ), 'compare' => 'IN' ) ) ); ob_start(); $products = new WP_Query( $args ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> have_posts() ) : $products->the_post(); ?> '12', 'columns' => '4', 'orderby' => 'title', 'order' => 'asc' ), $atts ) ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'orderby' => $orderby, 'order' => $order, 'posts_per_page' => $per_page, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ) ); ob_start(); add_filter( 'posts_clauses', 'woocommerce_order_by_rating_post_clauses' ); $products = new WP_Query( $args ); remove_filter( 'posts_clauses', 'woocommerce_order_by_rating_post_clauses' ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> have_posts() ) : $products->the_post(); ?> '12', 'columns' => '4', 'orderby' => 'date', 'order' => 'desc' ), $atts)); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ), array( 'key' => '_featured', 'value' => 'yes' ) ) ); ob_start(); $products = new WP_Query( $args ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> have_posts() ) : $products->the_post(); ?> 1, 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'no_found_rows' => 1 ); if(isset($atts['sku'])){ $args['meta_query'][] = array( 'key' => '_sku', 'value' => $atts['sku'], 'compare' => '=' ); } if(isset($atts['id'])){ $args['p'] = $atts['id']; } $single_product = new WP_Query( $args ); ob_start(); while ( $single_product->have_posts() ) : $single_product->the_post(); wp_enqueue_script( 'wc-single-product' ); ?>
commentmeta.meta_key = 'rating' "; $args['join'] .= " LEFT JOIN $wpdb->comments ON($wpdb->posts.ID = $wpdb->comments.comment_post_ID) LEFT JOIN $wpdb->commentmeta ON($wpdb->comments.comment_ID = $wpdb->commentmeta.comment_id) "; $args['orderby'] = "$wpdb->commentmeta.meta_value DESC"; $args['groupby'] = "$wpdb->posts.ID"; return $args; } /** * Shortcode creation **/ add_shortcode('product', 'woocommerce_product'); add_shortcode('product_page', 'woocommerce_product_page_shortcode'); add_shortcode('product_category', 'woocommerce_product_category'); add_shortcode('product_categories', 'woocommerce_product_categories'); add_shortcode('add_to_cart', 'woocommerce_product_add_to_cart'); add_shortcode('add_to_cart_url', 'woocommerce_product_add_to_cart_url'); add_shortcode('products', 'woocommerce_products'); add_shortcode('recent_products', 'woocommerce_recent_products'); add_shortcode('sale_products', 'woocommerce_sale_products'); add_shortcode('best_selling_products', 'woocommerce_best_selling_products'); add_shortcode('top_rated_products', 'woocommerce_top_rated_products'); add_shortcode('featured_products', 'woocommerce_featured_products'); add_shortcode('woocommerce_cart', 'get_woocommerce_cart'); add_shortcode('woocommerce_checkout', 'get_woocommerce_checkout'); add_shortcode('woocommerce_order_tracking', 'get_woocommerce_order_tracking'); add_shortcode('woocommerce_my_account', 'get_woocommerce_my_account'); add_shortcode('woocommerce_edit_address', 'get_woocommerce_edit_address'); add_shortcode('woocommerce_change_password', 'get_woocommerce_change_password'); add_shortcode('woocommerce_lost_password', 'get_woocommerce_lost_password'); add_shortcode('woocommerce_view_order', 'get_woocommerce_view_order'); add_shortcode('woocommerce_pay', 'get_woocommerce_pay'); add_shortcode('woocommerce_thankyou', 'get_woocommerce_thankyou'); add_shortcode('woocommerce_messages', 'woocommerce_messages_shortcode');