• Resolved lockoloop

    (@lockoloop)


    Hello,

    So I made this custom archive-template.php to display all my products on one page, sorted per category.
    My problem is that now the search product function works only partly: if it only find one result, it redirects to the product page (good), if it doesn’t find any result it displays no products found (also good), but when it does find something it displays the whole catalog instead.
    What should I add or change to my loop so that it can work? (would be nice if I could keep the results sorted by category, but that would be a bonus :))
    Thank you.

    if ( is_shop() ) {		
    		$categories_args = array(
    		'taxonomy' => 'product_cat'	);
    
    		$product_categories = get_terms( $categories_args );
    		if ( is_admin() ) return false;
    
    		echo '<ul class="woocommerce">';
    		// now we are looping over each term
    		foreach ($product_categories as $product_category) {
    			$term_id 	= $product_category->term_id;
    			$term_name 	= $product_category->name;
    			$term_desc 	= $product_category->description;
    			$term_link 	= get_term_link($product_category->slug, $product_category->taxonomy);
    
    			echo '<li class="cat-title" id="cat-'.$term_id.'">';
    			echo '<h3>'.$term_name.'</h3>';
    
    			$products_args = array(
    				'post_type' 	=> 'product',
    				'orderby' => 'title',
    				'order' => 'ASC',
    				'limit' => -1,
    				'posts_per_page' => -1,
    				'paginate'          => false,
    				'page'              => 1,
    				'tax_query' 	=> array( 
    					array(
    						'taxonomy' => 'product_cat',
    						'field'    => 'term_id',
    						'terms'    => $term_id, 
    					),
    				),
    			);
    
    			$products = new WP_Query( $products_args );
    
    			//Looping time!
    			if ( $products->have_posts() ) {
    				woocommerce_product_loop_start();
    
    					while ( $products->have_posts() ) : $products->the_post();
    						wc_get_template_part( 'content', 'product' );
    
    					endwhile; // end of the loop.
    
    				woocommerce_product_loop_end();
    				wp_reset_postdata();
    
    				} else { 
    					do_action('woocommerce_no_products_found');
    					}
    
    			echo '</li>';
    		}
    
    		echo '</ul>';//END of catalog list
    
    	}

    The page I need help with: [log in to see the link]

Viewing 1 replies (of 1 total)
  • Mirko P.

    (@rainfallnixfig)

    Hi there,

    Thanks for reaching out!

    Support for custom coding is limited on this forum as outlined in our Support Policy.

    This is a fairly complex development topic. I’m going to leave the thread open for a bit to see if anyone is able to chime in to help you out.

    I can also recommend the WooCommerce Developer Resources Portal for resources on developing for WooCommerce.

    You can also visit the WooCommerce Facebook Community group or the #developers channel of the WooCommerce Community Slack.

    We’re lucky to have a great community of open-source developers for WooCommerce, and many of our developers hang out there, as well.

    Additionally, we highly recommend contacting one of the services on our customizations page: https://woocommerce.com/customizations/.

    Cheers.

Viewing 1 replies (of 1 total)
  • The topic ‘Making search work with custom archive product’ is closed to new replies.