Skip to main content

WooCommerce & Plugin Overrides

warning

WooCommerce template overrides can become outdated quickly. Always test after WooCommerce updates and keep override diffs minimal.

WooCommerce & Plugin Overrides Explained​

LayerWhat you changeWhere
Theme compatibilityTheme-level WooCommerce integrationOften in inc/compatibility/
Hooks/filtersAdd/remove output without copying templatesChild theme inc/hooks.php
Template overridesReplace WooCommerce templatesChild theme woocommerce/ folder

Why It Matters​

  • Shops have high-impact templates (product, cart, checkout).
  • Small layout issues can break conversions.
  • Updates are frequent, so you need an upgrade-safe strategy.

How It Works​

WooCommerce renders templates and fires hooks. GeneratePress adds its own layout system around them. Your child theme can adjust layout via filters and WooCommerce hooks.

Practical Walkthrough​

Step 1: Verify WooCommerce Plugin State​

verify-woocommerce.sh
cd /var/www/html
wp plugin list | grep woocommerce || true
wp plugin is-active woocommerce && echo "woocommerce active" || true

Step 2: Locate GeneratePress WooCommerce Compatibility (If Present)​

locate-gp-woocommerce-compat.sh
cd /var/www/html/wp-content/themes/generatepress
ls inc/compatibility 2>/dev/null | head -n 60 || true
grep -R "woocommerce" -n inc/compatibility inc 2>/dev/null | head -n 60

Step 3: Create the Child woocommerce/ Folder (For Overrides)​

create-child-woocommerce-folder.sh
cd /var/www/html
mkdir -p wp-content/themes/generatepress-child/woocommerce

Step 4: Locate WooCommerce Templates (Source)​

locate-woocommerce-templates.sh
cd /var/www/html
ls -lah wp-content/plugins/woocommerce/templates 2>/dev/null | head -n 60 || true

Practical Examples​

Example 1: Remove Sidebars on Product Pages (Filter)​

wp-content/themes/generatepress-child/inc/filters.php
<?php

add_filter( 'generate_sidebar_layout', function( $layout ) {
if ( function_exists( 'is_product' ) && is_product() ) {
return 'no-sidebar';
}
return $layout;
} );

Example 2: Template Override Pattern​

If you must override:

  1. Find the template in the WooCommerce plugin
  2. Copy it into wp-content/themes/generatepress-child/woocommerce/ using the same relative path
  3. Make the smallest possible change
caution

Keep a note of the WooCommerce version when you copied the template.

Example 3: Add a Small WooCommerce Hook Output​

Common WooCommerce hooks include:

HookRegion
woocommerce_before_main_contenttop of content
woocommerce_after_main_contentbottom of content
woocommerce_before_shop_loopbefore product grid
wp-content/themes/generatepress-child/inc/hooks.php
<?php

add_action( 'woocommerce_before_main_content', function() {
echo '<div class="wc-note">Shop notice (staging)</div>';
} );

Best Practices​

PracticeWhy
Hooks/filters firstLower upgrade debt
Override only critical templatesFewer merge points
Keep override diffs minimalEasier updates
Test cart/checkout end-to-endPrevent conversion breaks
Record WooCommerce versionHelps future upgrades
Keep an override listPrevents surprises during updates

Troubleshooting​

SymptomCauseFix
Template out-of-date warningsWooCommerce updatedRe-copy new template and re-apply diff
Layout broken on productConflicting pluginsDisable on staging and isolate
Changes not visibleCachePurge LSCache

Hands-On​

  1. Disable sidebars on product pages with a filter.
  2. Identify one WooCommerce hook you might use for a small UI tweak.
  3. Document your "override only if needed" policy in README.
  4. Locate a WooCommerce template file and document its override path.

Quick Reference​

woocommerce-cheatsheet.sh
cd /var/www/html
wp plugin is-active woocommerce && echo "woocommerce active"
ls wp-content/themes/generatepress-child/woocommerce 2>/dev/null || true

What's Next​