WC_Template_Loader::get_template_loader_files()private staticWC 3.0.0

Get an array of filenames to search for a given template.

Method of the class: WC_Template_Loader{}

Hooks from the method

Return

String[].

Usage

$result = WC_Template_Loader::get_template_loader_files( $default_file );
$default_file(string) (required)
The default file name.

Changelog

Since 3.0.0 Introduced.

WC_Template_Loader::get_template_loader_files() code WC 8.6.1

private static function get_template_loader_files( $default_file ) {
	$templates   = apply_filters( 'woocommerce_template_loader_files', array(), $default_file );
	$templates[] = 'woocommerce.php';

	if ( is_page_template() ) {
		$page_template = get_page_template_slug();

		if ( $page_template ) {
			$validated_file = validate_file( $page_template );
			if ( 0 === $validated_file ) {
				$templates[] = $page_template;
			} else {
				error_log( "WooCommerce: Unable to validate template path: \"$page_template\". Error Code: $validated_file." ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
			}
		}
	}

	if ( is_singular( 'product' ) ) {
		$object       = get_queried_object();
		$name_decoded = urldecode( $object->post_name );
		if ( $name_decoded !== $object->post_name ) {
			$templates[] = "single-product-{$name_decoded}.php";
		}
		$templates[] = "single-product-{$object->post_name}.php";
	}

	if ( is_product_taxonomy() ) {
		$object = get_queried_object();

		$templates[] = 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php';
		$templates[] = WC()->template_path() . 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php';
		$templates[] = 'taxonomy-' . $object->taxonomy . '.php';
		$templates[] = WC()->template_path() . 'taxonomy-' . $object->taxonomy . '.php';

		if ( taxonomy_is_product_attribute( $object->taxonomy ) ) {
			$templates[] = 'taxonomy-product_attribute.php';
			$templates[] = WC()->template_path() . 'taxonomy-product_attribute.php';
			$templates[] = $default_file;
		}

		if ( is_tax( 'product_cat' ) || is_tax( 'product_tag' ) ) {
			$cs_taxonomy = str_replace( '_', '-', $object->taxonomy );
			$cs_default  = str_replace( '_', '-', $default_file );
			$templates[] = 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php';
			$templates[] = WC()->template_path() . 'taxonomy-' . $cs_taxonomy . '-' . $object->slug . '.php';
			$templates[] = 'taxonomy-' . $object->taxonomy . '.php';
			$templates[] = WC()->template_path() . 'taxonomy-' . $cs_taxonomy . '.php';
			$templates[] = $cs_default;
		}
	}

	$templates[] = $default_file;
	if ( isset( $cs_default ) ) {
		$templates[] = WC()->template_path() . $cs_default;
	}
	$templates[] = WC()->template_path() . $default_file;

	return array_unique( $templates );
}