Las páginas de tipos de publicación personalizadas aparecen como "no encontradas"
He creado dos nuevos tipos de publicación personalizados (Custom Post Types) usando código que he utilizado exitosamente en otros proyectos sin problemas. El primero se llama top_charts
, el otro case_studies
, y ambos aparecen correctamente en el menú de administración y puedo crear nuevas publicaciones.
Desafortunadamente las nuevas publicaciones no aparecen. Solo obtengo una respuesta 404.php
.
He creado un archivo archive-top_charts.php
para ver si puedo hacer que aparezca algo, pero veo una respuesta "página no encontrada" del 404.php
.
Originalmente nombré las publicaciones personalizadas como top-charts
y case-studies
, pero pensé que el guión podría ser el problema, así que las renombré para usar un guión bajo en su lugar. No ha ayudado.
He intentado volver a guardar mis enlaces permanentes, pero nada ha cambiado. Mi archivo .htaccess se ve como se esperaría (y otras páginas funcionan bien). ¿Qué más puedo revisar?

¡No necesitas editar tu código PHP!
Aunque puedes hacer esto en la función que registra tu tipo de contenido personalizado, como sugieren otras respuestas, también puedes hacerlo desde el menú de configuración, evitando así modificar tu código PHP:
Para actualizar las reglas de reescritura o los enlaces permanentes de WordPress (generalmente necesario hacerlo manualmente para nuevos tipos de contenido personalizado) desde el Escritorio:
- En el menú principal, busca "Ajustes > Enlaces permanentes".
- Desplázate hacia abajo si es necesario y haz clic en "Guardar cambios".
- Las reglas de reescritura y los enlaces permanentes se actualizarán.
¡Es así de simple!

Creo que también necesitaba has_archive
, pero es bueno saber que puedes forzar una actualización a través del menú.

¿Hay alguna manera de guardar los cambios (actualizar) los enlaces permanentes automáticamente en lugar de tener que ir a Ajustes > Enlaces permanentes cada vez que se añade una categoría/término de CPT? Por ejemplo, ¿cómo podrá hacer esto un usuario no administrador si no tiene acceso a los ajustes? ¿Se puede llamar a un hook al añadir una nueva categoría para actualizar los enlaces permanentes automáticamente?

Para solucionar el problema de que no se encuentre un tipo de entrada personalizado (custom post), utiliza el siguiente código en tu archivo functions.php
:
flush_rewrite_rules( false );
Esto deberías hacerlo solo como medida temporal, ya que de lo contrario se ejecutará en cada carga de página.
Para más detalles, sigue este enlace
En cuanto a que el archivo archive-top_charts.php
no aparezca, asegúrate de tener 'has_archive' => true
cuando estés registrando tu tipo de entrada.

Me doy cuenta de que esto llega tarde (y puede que no esté relacionado con el problema), pero quería señalar a otros un posible problema.
En mi caso, había configurado la reescritura de mi taxonomía como "tools" y la reescritura del tipo de contenido como lo mismo. Por lo tanto, nunca funcionaría correctamente ya que era un conflicto. Desafortunadamente, no hay detección para algo así, así que pensé en señalarlo para otros.
