I want to show some content after the third product (and maybe the sixth, ninth…) of a product category. Not every category has that extra content or the same amount of it. So it should be flexible.
I found an example which uses the following code :
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'template-parts/content' ); ?>
<?php if ( $wp_query->current_post == 1 ) { ?>
<div>Put Ad Here</div>
<?php } ?>
<?php endwhile; endif; ?>
I added that code to my archive-product.php
like this:
if ( wc_get_loop_prop( 'total' ) ) {
while ( have_posts() ) {
the_post();
/**
* Hook: woocommerce_shop_loop.
*/
do_action( 'woocommerce_shop_loop' );
wc_get_template_part( 'content', 'product' );
if ( $wp_query->current_post == 1 ) {
echo '<div>Put Ad Here</div>';
}
}
}
But it doesn’t show anything.
And it would be nice if there is a way to add these content without touching the template file at all.
Is there an hook I could use for that?
2
Answers
Updated – Instead of overriding a template file, you can use the following hooked function, that will add a custom content full row in between each products row:
Code goes in functions.php file of your active child theme (or active theme). Tested and works.
Not able to comment due to my rookie status, but a small addition to the code above, if you change
to
The content will be placed after every 6th product. Obviously, you can use any number.
Thought this to be helpful, as I could not find a solution to this.