Перехватить файл related.php из WooCommerce

Пожалуйста, помогите понять как перехватить файл. Я уже пробовал задавать этот вопрос на других источниках, но до сих пор мне никто не подсказал... решил обратиться к старой доброй каме

В плагине WooCommerce есть подключение файла related.php вот таким образом - https://github.com/woocommerce/woocommerce/blob/527a7261bd0ad1f4ba1d8eb2f82a96f53867b715/includes/wc-template-functions.php#L1925

Этот файл отвечает за отображение похожих товаров в карточке продукта. Насколько я помню, файл можно изменить в самой теме, создав папку с директорией до своего файла /woocommerce/single-product/related.php в корне шаблона

Я хочу понять как перехватить файл именно из плагина и объявить подключение на другой источник, например в мой плагин. По сути я хочу сделать подмену related.php своим файлом. Даже если в теме мы создадим каталог /woocommerce/single-product/related.php, приоритет все равно должен быть у меня, с перенаправлением на мой файл.

Пожалуйста, покажите пример того, как я могу перехватить этот файл https://github.com/woocommerce/woocommerce/blob/527a7261bd0ad1f4ba1d8eb2f82a96f53867b715/includes/wc-template-functions.php#L1925, чтобы он работал из другого источника...

Буду очень благодарен!

Заметки к вопросу:
Dan Zakirov 4.9 лет назад

Решение было найдено тут https://stackoverflow.com/questions/32446556/woocommerce-alternative-for-woocommerce-locate-template . Требуется применить фильтр woocommerce_locate_template, который принимает три аргумента:

$template является результатом основной функции wp locate_template
$template_name является только именем файла
$template_path - путь woocommerce для шаблона

Я сделал вот так:

function main_wc_template($template, $template_name, $template_path) {
	if ($template_name == 'single-product/related.php') {
		$template = plugin_dir_path( __FILE__ ) . 'includes/related.php';
	}

	return $template;
}

add_filter('woocommerce_locate_template', 'main_wc_template', 20, 3);

На каме эта функция не описана кстати https://wp-kama.ru/hook/woocommerce_locate_template

campusboy 4.9 лет назад

Решение ты нашёл у меня в чате)) а эту ссылку я тебе скинул, чтобы вручную пример не писать. Просто ответ звучит так, как будто тебя проигнорировали, но это ведь не так. А хук мы обязательно опишем со временем, Москва не сразу строилась.

Dan Zakirov 4.9 лет назад

Не отрицаю, ты подсказал и дал ссылку. Сам искал дофига... Теперь в каждом посте тебя буду указывать)