By default, the WooCommerce shop page is quite limited when it comes to customization. Unlike standard WordPress pages, the shop page is a special placeholder that automatically outputs your products, so you won’t find a block editor or content area you can easily edit from the dashboard. This can be frustrating if you want to add extra information, promotional text, trust signals, or even a custom call to action beneath the list of products.
The good news is that WooCommerce provides hooks you can use to inject content exactly where you want it — including right below the products on the shop page. With just a small PHP snippet, you can display anything from simple text to HTML, shortcodes, or even dynamic content. In this tutorial, we’ll look at the correct hook for targeting the shop page only, and show you how to safely add content after the product loop.

PHP Snippet: Add Content At The Bottom Of The WooCommerce Shop Page
This code hooks into woocommerce_after_main_content, which fires right after WooCommerce outputs the product loop. The is_shop() conditional ensures the content is printed only on the main shop page, not on category archives or single products.
Inside the callback, I first add a spacer block for visual breathing room. Then I render a linked image using wp_get_attachment_image(). This function is preferable to hardcoding <img> tags because it automatically pulls in the correct srcset, handles responsive image sizes, and allows passing accessibility and performance attributes like alt, loading, and decoding.
In practice, you can replace the spacer and image with any custom HTML, shortcode, or dynamic logic. Just keep in mind that this hook runs after all products, but still within the main content wrapper, so it’s the perfect place for promotional banners or custom messaging.
/**
* @snippet Echo Content After Product Loop @ WooCommerce Shop
* @tutorial https://businessbloomer.com/woocommerce-customization
* @author Rodolfo Melogli, Business Bloomer
* @compatible WooCommerce 10
* @community https://businessbloomer.com/club/
*/
add_action( 'woocommerce_after_main_content', 'bbloomer_content_below_shop' );
function bbloomer_content_below_shop() {
if ( is_shop() ) {
echo '<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>';
echo '<figure class="wp-block-image aligncenter size-large no-border"><a href="https://checkoutsummit.com/so-you-liked-one-of-those-quotes/">';
echo wp_get_attachment_image(
548,
'large',
false,
array(
'loading' => 'lazy',
'decoding' => 'async',
'class' => 'wp-image-548',
'alt' => 'Keep Calm and Place Order',
)
);
echo '</a></figure>';
}
}








