diff --git a/CHANGELOG.md b/CHANGELOG.md
index aa84bdd3cf72f38f106f7af33c6c605043722f00..b7e49348c1a9e9f8fee2ff19fe03c48ab8746084 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
+## Unreleased
+### Added
+- Introduced `WooTemplateResolver` for template paths and overrides in WooCommerce spirit.
+
 ## [2.0.0] - 2021-10-01
 ### Added
 - Add output_render method to Renderer interface
+
 ## [1.1.0] - 2019-09-23
 ### Added
-- PluginViewBuilder to facilitate building and rendering views for plugins
\ No newline at end of file
+- PluginViewBuilder to facilitate building and rendering views for plugins
diff --git a/src/Resolver/WooTemplateResolver.php b/src/Resolver/WooTemplateResolver.php
new file mode 100644
index 0000000000000000000000000000000000000000..e9ba35d6be7be88ceab32edc73623702142aed81
--- /dev/null
+++ b/src/Resolver/WooTemplateResolver.php
@@ -0,0 +1,35 @@
+<?php
+
+declare(strict_types=1);
+
+namespace WPDesk\View\Resolver;
+
+use WPDesk\View\Renderer\Renderer;
+use WPDesk\View\Resolver\Exception\CanNotResolve;
+
+/**
+ * Locate templates, respecting WooCommerce template load order, prepending custom path to seek for templates. This supports user's template overrides by default.
+ */
+class WooTemplateResolver implements Resolver {
+
+	/** @var string */
+	private $base_path;
+
+	public function __construct( string $base_path ) {
+		if ( ! function_exists( 'wc_locate_template' ) ) {
+			throw new \RuntimeException( sprintf( 'The "%s" resolver needs the WooCommerce plugin. Make sure it is installed and active.', __CLASS__ ) );
+		}
+
+		$this->base_path = $base_path;
+	}
+
+	public function resolve( $name, Renderer $renderer = null ): string {
+		$template = wc_locate_template( $name, '', $this->base_path );
+
+		if ( $template === '' ) {
+			throw new CanNotResolve( "Cannot resolve template {$name}" );
+		}
+
+		return $template;
+	}
+}