Ну при обработке
pre_get_posts создавайте фильтр, который будет подключать нужный вам шаблон/файл(вешайте его на фильтр
template_include).
События идут в следующем порядке:
parse_query
pre_get_posts
posts_selection
wp
template_redirect
template_include
get_header
Пример функции-обработчика фильтра template_include, давненько в плагине использовал:
/**
* Устанавливаем шаблон для нашей страницы
*
* @since 1.0
* @update 1.5
*
*
* @return
*/
public function template_include($template)
{
global $wp_query;
if(
$wp_query->query_vars['post_type'] == 'shops' &&
$wp_query->query_vars['category_name'] &&
$wp_query->query_vars['tag'] &&
$ctgenerate = get_query_template('ct-template')
)
$template = $ctgenerate;
return $template;
}