WordPress.org

Ready to get started?Download WordPress

Forums

Woocommerce new row every (for example) 3 products (4 posts)

  1. bartpeperkamp1980
    Member
    Posted 3 months ago #

    Does anybody know how to output a new row every (for example) 3 products?

    I am trying to edit the content-product.php file to do so:

    <?php
    /**
     * The template for displaying product content within loops.
     *
     * Override this template by copying it to yourtheme/woocommerce/content-product.php
     *
     * @author 		WooThemes
     * @package 	WooCommerce/Templates
     * @version     1.6.4
     */
    
    if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
    
    for ($i = 0; $i < 25; $i++) {
        if ($i % 8 === 0 && $i !== 0) {
            echo '<div class="row"></div>';
        }
    
        // Do output here
    
    global $product, $woocommerce_loop;
    
    // Store loop count we're currently on
    if ( empty( $woocommerce_loop['loop'] ) )
    	$woocommerce_loop['loop'] = 0;
    
    // Store column count for displaying the grid
    if ( empty( $woocommerce_loop['columns'] ) )
    	$woocommerce_loop['columns'] = apply_filters( 'loop_shop_columns', 4 );
    
    // Ensure visibility
    if ( ! $product || ! $product->is_visible() )
    	return;
    
    // Increase loop count
    $woocommerce_loop['loop']++;
    
    // Extra post classes
    $classes = array();
    if ( 0 == ( $woocommerce_loop['loop'] - 1 ) % $woocommerce_loop['columns'] || 1 == $woocommerce_loop['columns'] )
    	$classes[] = 'first';
    if ( 0 == $woocommerce_loop['loop'] % $woocommerce_loop['columns'] )
    	$classes[] = 'last';
    	}
    ?>
    
    <div class="large-3 columns">
    	<div <?php post_class( $classes ); ?>>
    
    		<?php do_action( 'woocommerce_before_shop_loop_item' ); ?>
    
    		<a href="<?php the_permalink(); ?>">
    
    			<?php
    				/**
    				 * woocommerce_before_shop_loop_item_title hook
    				 *
    				 * @hooked woocommerce_show_product_loop_sale_flash - 10
    				 * @hooked woocommerce_template_loop_product_thumbnail - 10
    				 */
    				do_action( 'woocommerce_before_shop_loop_item_title' );
    			?>
    
    			<h3><?php the_title(); ?></h3>
    
    			<?php
    				/**
    				 * woocommerce_after_shop_loop_item_title hook
    				 *
    				 * @hooked woocommerce_template_loop_rating - 5
    				 * @hooked woocommerce_template_loop_price - 10
    				 */
    				do_action( 'woocommerce_after_shop_loop_item_title' );
    			?>
    
    		</a>
    
    		<?php do_action( 'woocommerce_after_shop_loop_item' ); ?>
    
    	</div>
    </div>

    Anybody can help me here? I know i am not a good programmer :-S

  2. Zulfikar Nore
    Member
    Posted 3 months ago #

    Why not just use the WooCommerce Product Archive Customiser plugin?

    If you must use a template then perhaps looking at the plugin's code might give you some ideas on how to achieve what you need.

    Regards,
    Zulf

  3. bartpeperkamp1980
    Member
    Posted 3 months ago #

    Thanks for the tip. I think the solution lies in this, but it's so simple i can't wrap my head around it ;)

  4. bartpeperkamp1980
    Member
    Posted 3 months ago #

    I already tried this:

    $classes = array();
    if ( 0 == ( $woocommerce_loop['loop'] - 1 ) % $woocommerce_loop['columns'] || 1 == $woocommerce_loop['columns'] )
    	echo '<div>';
    if ( 0 == $woocommerce_loop['loop'] % $woocommerce_loop['columns'] )
    	echo '</div>';

    This obviously does not work, because it wil only put div's around every first 3 product and no div around the fourth...

Reply

You must log in to post.

About this Topic

Tags

No tags yet.