Plantilla de taxonomía personalizada no funciona
He creado un tipo de contenido personalizado llamado property
, y una taxonomía llamada city
asociada a este tipo de contenido. Hay varias ciudades (términos) como toronto
, taiwan
, dhaka
.
Quiero crear una plantilla que pueda mostrar todos los posts bajo una ciudad. He creado el archivo taxonomy-city.php
, pero no está funcionando.
Este es mi código para el archivo taxonomy-city.php
:
<?php
/*
* Nombre de la plantilla: Ciudad
*/
get_header();
?>
<div id="page_content">
<div class="page-wrapper">
<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>
<div id="page_content_wrapper">
<div id="careers_table">
<p class="content_text">asdsd</p>
</div>
<?php endwhile; ?>
<?php else : ?>
<div class="post">
<h3><?php _e('Error 404: No encontrado', 'cmeasytheme'); ?></h3>
</div>
<?php endif; ?>
</div>
<div style="clear:both;"></div>
</div>
</div>
<?php get_footer(); ?>
Muestra todo, pero no imprime nada dentro del loop.
También he visitado estos enlaces, pero ninguno me ayudó:

En primer lugar, un archivo taxonomy-{taxonomy}.php
es una Plantilla de Archivo y no un buen nombre para una plantilla personalizada. Así que si deseas proceder con una plantilla personalizada, intenta nombrar el archivo con algo como template-ciudades.php
y llamar el archivo desde una Página.
De lo contrario, crea una simple plantilla de archivo taxonomy-{taxonomy}.php
, y en tu caso taxonomy-city.php
con código como:
<?php get_header(); ?>
<div id="page_content">
<div class="page-wrapper">
<div id="page_content_wrapper">
<?php if (have_posts()) : ?>
<div id="careers_table">
<?php while (have_posts()) : the_post(); ?>
<p class="content_text"><?php the_title(); ?></p>
<?php endwhile; ?>
<?php // código de paginación aquí ?>
</div>
<?php else : ?>
<div class="post">
<h3><?php _e('No se encontró la ciudad', 'cmeasytheme'); ?></h3>
</div>
<?php endif; ?>
</div> <!-- .page_content_wrapper -->
<div style="clear:both;"></div>
</div> <!-- .page-wrapper -->
</div> <!-- .page_content -->
<?php get_footer(); ?>
Y de esta manera, NO ES NECESARIO crear ninguna página ni llamar a una plantilla de página.
Sugerencias
Aunque las sugerencias no están relacionadas con WordPress, sino con Buenas prácticas:
- Intenta nombrar tus clases separadas por guiones (-), NO por guiones bajos (_). Así que una clase como
page_content_wrapper
seríapage-content-wrapper
. - Evita los estilos en línea y crea una clase en su lugar. Así que el div de limpieza
<div style="clear:both;"></div>
puede ser algo como<div class="clearfix"></div>
y puedes colocar.clearfix{clear:both}
en tu archivo CSS externo. - Usa comentarios importantes para que puedas tener seguimiento de los divs de cierre, etc.

Gracias por tu respuesta. Me ayudó mucho. Pero el problema era diferente, cometí un error al crear el tipo de publicación "property". Puse 'exclude_from_search' => true, y después de cambiarlo a false, ahora la plantilla muestra los datos.

He encontrado un tutorial relacionado con taxonomías personalizadas basadas en jerárquicas y no jerárquicas. Espero que te ayude a resolver tu problema https://www.wpblog.com/create-custom-taxonomies-in-wordpress/
