Theme overrides
Copy any plugin template into your theme. No filter to register; View::render() picks it up automatically.
The pattern
Copy any plugin template into your-theme/order-updates-for-woo/<lowercased-path-after-Templates/>. View::render() picks up your version automatically. Delete the override to revert.
Copy-paste — admin card templates
cp wp-content/plugins/order-updates-for-woo/src/Admin/Orders/Templates/card/header.php \
wp-content/themes/your-theme/order-updates-for-woo/admin/orders/card/header.php
cp wp-content/plugins/order-updates-for-woo/src/Admin/Orders/Templates/card/footer.php \
wp-content/themes/your-theme/order-updates-for-woo/admin/orders/card/footer.php
cp wp-content/plugins/order-updates-for-woo/src/Admin/Orders/Templates/card/tabs.php \
wp-content/themes/your-theme/order-updates-for-woo/admin/orders/card/tabs.php
cp wp-content/plugins/order-updates-for-woo/src/Admin/Orders/Templates/card/note-thread.php \
wp-content/themes/your-theme/order-updates-for-woo/admin/orders/card/note-thread.php
cp wp-content/plugins/order-updates-for-woo/src/Admin/Orders/Templates/card/participants.php \
wp-content/themes/your-theme/order-updates-for-woo/admin/orders/card/participants.php
Copy-paste — email templates
# Customer-facing emails
cp wp-content/plugins/order-updates-for-woo/src/Frontend/Notifications/Templates/order-update-notification.php \
wp-content/themes/your-theme/order-updates-for-woo/frontend/notifications/order-update-notification.php
# Rating follow-up (promoter / detractor)
cp wp-content/plugins/order-updates-for-woo/src/Frontend/Notifications/Templates/rating-followup.php \
wp-content/themes/your-theme/order-updates-for-woo/frontend/notifications/rating-followup.php
# Staff-facing emails
cp wp-content/plugins/order-updates-for-woo/src/Admin/Notifications/Templates/order-update-notification.php \
wp-content/themes/your-theme/order-updates-for-woo/admin/notifications/order-update-notification.php
Every overridable template
| Plugin path | Theme override path |
|---|---|
src/Admin/Orders/Templates/card/header.php | order-updates-for-woo/admin/orders/card/header.php |
src/Admin/Orders/Templates/card/footer.php | order-updates-for-woo/admin/orders/card/footer.php |
src/Admin/Orders/Templates/card/tabs.php | order-updates-for-woo/admin/orders/card/tabs.php |
src/Admin/Orders/Templates/card/tags.php | order-updates-for-woo/admin/orders/card/tags.php |
src/Admin/Orders/Templates/card/note-thread.php | order-updates-for-woo/admin/orders/card/note-thread.php |
src/Admin/Orders/Templates/card/participants.php | order-updates-for-woo/admin/orders/card/participants.php |
src/Admin/Orders/Templates/card/customer-visibility-notice.php | order-updates-for-woo/admin/orders/card/customer-visibility-notice.php |
src/Frontend/Notifications/Templates/order-update-notification.php | order-updates-for-woo/frontend/notifications/order-update-notification.php |
src/Frontend/Notifications/Templates/rating-followup.php | order-updates-for-woo/frontend/notifications/rating-followup.php |
src/Admin/Notifications/Templates/order-update-notification.php | order-updates-for-woo/admin/notifications/order-update-notification.php |
Custom override path
add_filter( 'order_updates_for_woo_template_override_candidates', 'my_addon_inject_mu_template_path', 10, 2 );
function my_addon_inject_mu_template_path( array $candidates, string $template_path ): array {
array_unshift( $candidates, WP_CONTENT_DIR . '/mu-templates/order-updates-for-woo/' . $template_path );
return $candidates;
}
First existing file wins. Plugin source is always last.
Subject or body wording only? Use WooCommerce → Settings → Emails → <email>. Don’t override a template just to change a sentence.