Adicionando tipos de postagem personalizados para archive.php

Tenho 3 tipos de postagem diferentes no meu blog. Quando eu clico em uma categoria de uma postagem personalizada, eu redireciono para uma página 404, porque, por padrão, archive.php não reconhece tipos de postagem personalizados.

Eu encontrei essa solução (e outras usando a mesma abordagem) em vários lugares diferentes:

add_filter('pre_get_posts', 'query_post_type'); function query_post_type($query) { if(is_category() || is_tag()) { $post_type = get_query_var('post_type'); if($post_type) $post_type = $post_type; else $post_type = array('post','cpt'); // replace cpt to your custom post type $query->set('post_type',$post_type); return $query; } } 

O problema é que, na barra lateral, também uso um loop WP_Query para mostrar as últimas postagens de cada categoria de postagem personalizada. Esta solução funciona perfeitamente para a página de arquivamento, mas ela é desordenada (na verdade, combina todos os meus tipos de publicação) com meu script de barra lateral.

Estou procurando uma solução que não use pré_get_posts por horas e não encontrei nada. A ajuda seria muito apreciada.

Solutions Collecting From Web of "Adicionando tipos de postagem personalizados para archive.php"