Skip to content

Commit

Permalink
Add product archive header template and re-hook (#33681)
Browse files Browse the repository at this point in the history
* Add product archive header template and re-hook

Moves the product taxonomy archive header into its own template file,
creates a related output function, and then re-hooks the new template
back into the archive-product.php file in the same place, via the
'woocommerce_before_main_content' hook, priority 40.

This is so that this template part can be removed/unhooked via the
'remove_action' function, which is a cleaner approach than template
overrides or additional style changes.

Resolves: #33672

* add product archive header template changelog

* bump template versions

* bump template versions correctly

* add a new hook in the archive-product.php template for the header template
  • Loading branch information
tommyferry committed Mar 8, 2024
1 parent 8e200a3 commit 7fe00de
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 17 deletions.
4 changes: 4 additions & 0 deletions plugins/woocommerce/changelog/2023-10-24-08-52-26-105513
@@ -0,0 +1,4 @@
Significance: minor
Type: add

Add new product archive header template and hook into woocommerce_before_main_content
9 changes: 9 additions & 0 deletions plugins/woocommerce/includes/wc-template-functions.php
Expand Up @@ -1245,6 +1245,15 @@ function woocommerce_template_loop_category_link_close() {
}
}

if ( ! function_exists( 'woocommerce_product_taxonomy_archive_header' ) ) {
/**
* Output the products header on taxonomy archives.
*/
function woocommerce_product_taxonomy_archive_header() {
wc_get_template( 'loop/header.php' );
}
}

if ( ! function_exists( 'woocommerce_taxonomy_archive_description' ) ) {
/**
* Show an archive description on taxonomy archives.
Expand Down
7 changes: 7 additions & 0 deletions plugins/woocommerce/includes/wc-template-hooks.php
Expand Up @@ -53,6 +53,13 @@
*/
add_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );

/**
* Archive header.
*
* @see woocommerce_product_taxonomy_archive_header()
*/
add_action( 'woocommerce_shop_loop_header', 'woocommerce_product_taxonomy_archive_header' );

/**
* Archive descriptions.
*
Expand Down
26 changes: 9 additions & 17 deletions plugins/woocommerce/templates/archive-product.php
Expand Up @@ -12,7 +12,7 @@
*
* @see https://woo.com/document/template-structure/
* @package WooCommerce\Templates
* @version 3.4.0
* @version 8.6.0
*/

defined( 'ABSPATH' ) || exit;
Expand All @@ -28,23 +28,15 @@
*/
do_action( 'woocommerce_before_main_content' );

?>
<header class="woocommerce-products-header">
<?php if ( apply_filters( 'woocommerce_show_page_title', true ) ) : ?>
<h1 class="woocommerce-products-header__title page-title"><?php woocommerce_page_title(); ?></h1>
<?php endif; ?>
/**
* Hook: woocommerce_shop_loop_header.
*
* @since 8.6.0
*
* @hooked woocommerce_product_taxonomy_archive_header - 10
*/
do_action( 'woocommerce_shop_loop_header' );

<?php
/**
* Hook: woocommerce_archive_description.
*
* @hooked woocommerce_taxonomy_archive_description - 10
* @hooked woocommerce_product_archive_description - 10
*/
do_action( 'woocommerce_archive_description' );
?>
</header>
<?php
if ( woocommerce_product_loop() ) {

/**
Expand Down
47 changes: 47 additions & 0 deletions plugins/woocommerce/templates/loop/header.php
@@ -0,0 +1,47 @@
<?php
/**
* Product taxonomy archive header
*
* This template can be overridden by copying it to yourtheme/woocommerce/loop/header.php.
*
* HOWEVER, on occasion WooCommerce will need to update template files and you
* (the theme developer) will need to copy the new files to your theme to
* maintain compatibility. We try to do this as little as possible, but it does
* happen. When this occurs the version of the template file will be bumped and
* the readme will list any important changes.
*
* @see https://docs.woocommerce.com/document/template-structure/
* @package WooCommerce\Templates
* @version 8.6.0
*/

if ( ! defined( 'ABSPATH' ) ) {
exit;
}

?>
<header class="woocommerce-products-header">
<?php
/**
* Hook: woocommerce_show_page_title.
*
* Allow developers to remove the product taxonomy archive page title.
*
* @since 2.0.6.
*/
if ( apply_filters( 'woocommerce_show_page_title', true ) ) :
?>
<h1 class="woocommerce-products-header__title page-title"><?php woocommerce_page_title(); ?></h1>
<?php endif; ?>

<?php
/**
* Hook: woocommerce_archive_description.
*
* @since 1.6.2.
* @hooked woocommerce_taxonomy_archive_description - 10
* @hooked woocommerce_product_archive_description - 10
*/
do_action( 'woocommerce_archive_description' );
?>
</header>

0 comments on commit 7fe00de

Please sign in to comment.