Declaración condicional para categorías de tipos de post personalizados
Me gustaría mostrar un texto que dependa de la categoría de mi taxonomía personalizada, algo como:
si la categoría del custom post type es X, entonces mostrar Texto Y.
He intentado esto, pero no funciona:
global $post;
if (($post->post_type == 'myposttype') && is_category('slug-name-of-cat')) {
echo 'Mi texto'
}
¿Alguna idea?
is_category()
no funciona en páginas de archivo de taxonomías personalizadas. La etiqueta condicional correcta aquí es is_tax()
que toma el nombre de la taxonomía como primer parámetro y un string|int|array del nombre/s, slug/s o ID/s del término como segundo parámetro.
Así que tu declaración condicional completa puede verse algo como:
if ( is_tax( 'my_taxonomy', 'slug-name-of-the-term') ) {
echo 'Mi texto';
}
EDITAR
Además, para comprobar si un post pertenece a un término específico, debes usar has_term()
para verificar el término específico
global $post;
if ( ( $post->post_type == 'myposttype' )
&& has_term( 'slug-name-of-the_term', 'my_taxonomy' )
) {
echo 'Mi texto';
}

Las funciones condicionales is_*
funcionan en la consulta, no en la entrada actual. En otras palabras, te indican cosas sobre la página en la que estás, pero no sobre la entrada actual.
is_category()
verificará si la página actual es un archivo de categoríahas_category()
verificará si la entrada tiene asignada una categoría específica
Por tu descripción, sospecho que te refieres a lo segundo.

Consulta este codex para una comprensión detallada: https://codex.wordpress.org/Function_Reference/get_categories
Puedes hacer algo como esto:
$args = array(
'taxonomy' => **$your_taxonomy**,
'orderby' => name,
'title_li' => $title,
);
$sub_cats = get_categories( $args );
if( !empty($sub_cats) ) {
// muestra nuestro contenido
}
