Hook init — Registros e inicialização de recursos
Causa
Registrar recursos fora do hook init ou em hooks muito tardios pode causar inconsistências, pois o WordPress ainda não processou as rewrite rules.
Como resolver
Use init para tudo que precisa estar disponível no início do ciclo de vida do WordPress. Para CPTs e taxonomias, use prioridade 0 para garantir que outros plugins possam se encadear.
PHP
<?php
add_action('init', function () {
// Registrar post type
register_post_type('livro', [/* ... */]);
// Registrar taxonomia
register_taxonomy('genero', 'livro', [/* ... */]);
// Registrar rewrite tag para URLs customizadas
add_rewrite_tag('%autor_slug%', '([^/]+)');
// Carregar textdomain para traduções
load_plugin_textdomain('meu-plugin', false, basename(dirname(__FILE__)) . '/languages');
}, 0);