O gancho seguro mais antigo para obter informações de postagem é o template_redirect
hook. Todos os ganchos em questão são executados antes do Wordpress ter configurado pós-dados, portanto, qualquer informação de postagem ainda não está disponível nesse ponto.
Os globais como $wp_query
e $post
ainda não contêm dados, é por isso que seus esforços não retornam nada.
EDITAR
Informação extra como comentário por @TheDeadMedic
Na verdade,
wp
é um gancho anterior e ainda seguro - apenas useget_queried_object()
em vez de confiar em$post
global