Ну при обработке 
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;
	}