`locate_template()` is not pluggable, and there's no filter. A filter was proposed a decode ago, but it hasn't been implemented. The ticket for that is [here][1], so you can read that discussion to get an idea of why it might not have happened yet.

The [template hierarchy filters][2] might be helpful. They will let you filter the template hierarchy for the top-level templates like `page.php`, `date.php`, or `category.php` etc. Similarly, the [`template_include`][3] filter will let you replace the entire template used to render any given page.

But really, WordPress is not designed to support 3 levels of inheritance for templates. The "proper" solution to your problem would be to copy the child theme to a new theme and make your changes to that.


  [1]: https://core.trac.wordpress.org/ticket/13239
  [2]: https://developer.wordpress.org/themes/basics/template-hierarchy/#filter-hierarchy
  [3]: https://developer.wordpress.org/reference/hooks/template_include/