Skip to content

Commit

Permalink
Add product archive header template and re-hook
Browse files Browse the repository at this point in the history
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
  • Loading branch information
tommyferry authored and jonathansadowski committed Mar 7, 2024
1 parent 6a30974 commit 457fa4e
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 17 deletions.
11 changes: 11 additions & 0 deletions plugins/woocommerce/includes/wc-template-functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -1245,6 +1245,17 @@ 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() {
if ( is_product_taxonomy() ) {
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
Original file line number Diff line number Diff line change
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_before_main_content', 'woocommerce_product_taxonomy_archive_header', 40 );

/**
* Archive descriptions.
*
Expand Down
18 changes: 1 addition & 17 deletions plugins/woocommerce/templates/archive-product.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,26 +25,10 @@
* @hooked woocommerce_output_content_wrapper - 10 (outputs opening divs for the content)
* @hooked woocommerce_breadcrumb - 20
* @hooked WC_Structured_Data::generate_website_data() - 30
* @hooked woocommerce_product_taxonomy_archive_header - 40
*/
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; ?>

<?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
46 changes: 46 additions & 0 deletions plugins/woocommerce/templates/loop/header.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?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
*/

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 457fa4e

Please sign in to comment.