Home > Enterprise >  Add blocks to custom location on shop page?
Add blocks to custom location on shop page?

Time:12-05

On my woocommerce shop page I want to remove the description/blocks from the all-in-one woocommerce product grid block. Then add them back above it separately for layout reasons.

So I've removed the description like this:

remove_action( 'woocommerce_archive_description', 'woocommerce_product_archive_description', 10 );

Then I thought I could just add it back in with a shortcode block in the archive-product.html template.

add_shortcode('shop_description', 'woocommerce_product_archive_description');

The problem is, this adds it to the very top of document even before the <html> tag, instead of where I put the shortcode block...

CodePudding user response:

I realised the woocommerce_product_archive_description function uses echo and to make it work with a shortcode it needs to instead use return.

So I made a new function for the shortcode and boiled it down to be:

$shop_page = get_post( wc_get_page_id( 'shop' ) );
$allowed_html = wp_kses_allowed_html( 'post' );
$description = wc_format_content( wp_kses( $shop_page->post_content, $allowed_html ) );
if ( $description ) {
    return $description;
}
  • Related