Home Forums WoodMart support forum Products without prices

Products without prices

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #37537

    WebKonst
    Participant

    Hello, how can I hide the products without prizes?
    In the category I have it with the code:
    functions.php

    add_action( ‘woocommerce_product_query’, ‘themelocation_product_query’ );
    function themelocation_product_query( $q ){
    $meta_query = $q->get( ‘meta_query’ );
    $meta_query[] = array(
    ‘key’ => ‘_price’,
    ‘value’ => 0,
    ‘compare’ => ‘>’
    );
    $q->set( ‘meta_query’, $meta_query );
    }
    made..

    But the products displayed with Product Tab will not be hidden.
    For example, on the home page: Elegante Strassstein Damen Brauttasche mit Kette

    Thanks

    #37551

    Artem Temos
    Keymaster

    Hi,

    Try to add the following PHP code snippet to the child theme functions.php file to apply this for our products WPBakery element

    function woodmart_shortcode_products($atts, $query = false) {
    		global $woocommerce_loop, $woodmart_loop;
    		
    	    $parsed_atts = shortcode_atts( woodmart_get_default_product_shortcode_atts(), $atts );
    
    		extract( $parsed_atts );
    
    		$woodmart_loop['img_size'] = $img_size;
    
    		$woocommerce_loop['masonry'] = $products_masonry;
    		$woocommerce_loop['different_sizes'] = $products_different_sizes;
    
    	    $is_ajax = (defined( 'DOING_AJAX' ) && DOING_AJAX && $force_not_ajax != 'yes' );
    
    	    $parsed_atts['force_not_ajax'] = 'no'; // :)
    
    	    $encoded_atts = json_encode( $parsed_atts );
    
    		$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    
    		if( $ajax_page > 1 ) $paged = $ajax_page;
    
    		$ordering_args = WC()->query->get_catalog_ordering_args( $orderby, $order );
    
    		$meta_query   = WC()->query->get_meta_query();
    
    		$tax_query   = WC()->query->get_tax_query();
    		
    		if ( $post_type == 'new' ){
    			$meta_query[] = array(
    				'key'     => '_woodmart_new_label',
    				'value'   => 'on',
    				'operator' => 'IN',
    			);
    		}
    
    		if( $orderby == 'post__in' ) {
    			$ordering_args['orderby'] = $orderby;
    		}
    
    	    $args = array(
    	    	'post_type' 			=> 'product',
    	    	'post_status' 			=> 'publish',
    			'ignore_sticky_posts' 	=> 1,
    	    	'paged' 			  	=> $paged,
    			'orderby'             	=> $ordering_args['orderby'],
    			'order'               	=> $ordering_args['order'],
    	    	'posts_per_page' 		=> $items_per_page,
    	    	'meta_query' 			=> $meta_query,
    	    	'tax_query'             => $tax_query,
    		);
    		
    		$args['meta_query'][] = array(
    			'key' => '_price',
    			'value'    => '0',
    			'compare'    => '>',
    		);
    
    		if( ! empty( $ordering_args['meta_key'] ) ) {
    			$args['meta_key'] = $ordering_args['meta_key'];
    		}
    
    		if( $post_type == 'ids' && $include != '' ) {
    			$args['post__in'] = explode(',', $include);
    		}
    
    		if( ! empty( $exclude ) ) {
    			$args['post__not_in'] = explode(',', $exclude);
    		}
    
    		if( ! empty( $taxonomies ) ) {
    			$taxonomy_names = get_object_taxonomies( 'product' );
    			$terms = get_terms( $taxonomy_names, array(
    				'orderby' => 'name',
    				'include' => $taxonomies
    			));
    
    			if( ! is_wp_error( $terms ) && ! empty( $terms ) ) {
    				if( $post_type == 'featured' ) $args['tax_query'] = array( 'relation' => 'AND' );
    
    				if( count( $terms ) > 1 ) $args['tax_query']['categories'] = array( 'relation' => 'OR' );
    
    				foreach ( $terms as $term ) {
    					$args['tax_query']['categories'][] = array(
    						'taxonomy' => $term->taxonomy,
    					    'field' => 'slug',
    					    'terms' => array( $term->slug ),
    					    'include_children' => true,
    					    'operator' => 'IN'
    					);
    				}
    			}
    		}
    
    		if( $post_type == 'featured' ) {
    			$args['tax_query'][] = array(
    				'taxonomy' => 'product_visibility',
    				'field'    => 'name',
    				'terms'    => 'featured',
    				'operator' => 'IN',
    			);
    		}
    		
    
    		if( ! empty( $order ) ) {
    			$args['order'] = $order;
    		}
    
    		if( ! empty( $offset ) ) {
    			$args['offset'] = $offset;
    		}
    
    		if( $post_type == 'sale' ) {
    			$args['post__in'] = array_merge( array( 0 ), wc_get_product_ids_on_sale() );
    		}
    
    		if( $post_type == 'bestselling' ) {
    			$args['orderby'] = 'meta_value_num';
    			$args['meta_key'] = 'total_sales';
    		}
    
    		$woocommerce_loop['timer']   = $sale_countdown;
    		$woocommerce_loop['product_hover']   = $product_hover;
    		$woocommerce_loop['products_view']  = $layout;
    		
    		$woocommerce_loop['is_shortcode'] = true;
    
    		$products = new WP_Query( $args );
    
    		WC()->query->remove_ordering_args();
    
    		$woocommerce_loop['timer']   = $sale_countdown;
    		$woocommerce_loop['product_hover']   = $product_hover;
    
    		// Simple products carousel
    		if( $layout == 'carousel' ) return woodmart_generate_posts_slider( $parsed_atts, $products );
    
    		if ( WC()->version < '3.3.0' ){
    			$woocommerce_loop['columns'] = $columns;
    		}else{
    			wc_set_loop_prop( 'columns', $columns );
    		}
    
    		if ( $pagination != 'arrows' ) {
    			$woocommerce_loop['loop'] = $items_per_page * ( $paged - 1 );
    		}
    		
    		if ( $layout == 'list' ) {
    			$class .= ' elements-list';
    		}else{
    			$class .= ' woodmart-spacing-' . $spacing;
    			$class .= ' products-spacing-' . $spacing;
    			$class .= ' grid-columns-' . $columns;
    		}
    		
    		$class .= ' pagination-' . $pagination;
    		if( $woocommerce_loop['masonry'] == 'enable') {
    			$class .= ' grid-masonry';
    		}
    
    		ob_start();
    
    		if( ! $is_ajax) echo '<div class="woodmart-products-element">';
    
    	    if( ! $is_ajax && $pagination == 'arrows' ) echo '<div class="woodmart-products-loader"></div>';
    
    	    if( ! $is_ajax) echo '<div class="products elements-grid row woodmart-products-holder ' . esc_attr( $class) . '" data-paged="1" data-atts="' . esc_attr( $encoded_atts ) . '" data-source="shortcode">';
    
    		if ( $products->have_posts() ) :
    			while ( $products->have_posts() ) :
    				$products->the_post();
    				wc_get_template_part( 'content', 'product' );
    			endwhile;
    		endif;
    
        	if(!$is_ajax) echo '</div>';
    
    		woocommerce_reset_loop();
    		wp_reset_postdata();
    		woodmart_reset_loop();
    
    		if ( $products->max_num_pages > 1 && !$is_ajax ) {
    			?>
    		    	<div class="products-footer">
    		    		<?php if ($pagination == 'more-btn' || $pagination == 'infinit'): ?>
    		    			<a href="#" class="btn woodmart-load-more woodmart-products-load-more load-on-<?php echo ($pagination == 'more-btn') ? 'click' : 'scroll'; ?>"><span class="load-more-label"><?php esc_html_e('Load more products', 'woodmart'); ?></span><span class="load-more-loading"><?php esc_html_e('Loading...', 'woodmart'); ?></span></a>
    		    		<?php elseif ($pagination == 'arrows'): ?>
    		    			<div class="wrap-loading-arrow">
    			    			<div class="woodmart-products-load-prev disabled"><?php esc_html_e('Load previous products', 'woodmart'); ?></div>
    			    			<div class="woodmart-products-load-next"><?php esc_html_e('Load next products', 'woodmart'); ?></div>
    		    			</div>
    		    		<?php endif ?>
    		    	</div>
    		    <?php
    		}
    
        	if(!$is_ajax) echo '</div>';
    
    		$output = ob_get_clean();
    
    	    if( $is_ajax ) {
    	    	$output =  array(
    	    		'items' => $output,
    	    		'status' => ( $products->max_num_pages > $paged ) ? 'have-posts' : 'no-more-posts'
    	    	);
    	    }
    
    	    return $output;
    
    	}
    	add_shortcode( 'woodmart_products', 'woodmart_shortcode_products' );

    Regards

    #37619

    WebKonst
    Participant

    Great .. Thanks for such excellent support

    #37648

    Artem Temos
    Keymaster

    You are welcome! 🙂

Viewing 4 posts - 1 through 4 (of 4 total)