Declaración condicional para categorías de tipos de post personalizados

27 mar 2014, 16:36:52
Vistas: 16K
Votos: 1

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?

2
Comentarios

Prueba usando is_tax('taxonomy', 'term') - Ver Codex

Howdy_McGee Howdy_McGee
27 mar 2014 16:44:44

También hay un espacio en tu "is _category". Debería ser "is_category". Y verifica que el slug sea correcto. ¿Realmente pusiste "slug-" en tu slug de categoría?

mrwweb mrwweb
27 mar 2014 17:30:43
Todas las respuestas a la pregunta 3
2

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';
}
7 ene 2016 12:45:08
Comentarios

Todavía necesita un punto y coma después de esa línea de echo. ;-)

heytricia heytricia
23 jun 2017 23:07:04

la versión "edit" funcionó para mí

Nuno Sarmento Nuno Sarmento
25 nov 2020 15:54:42
0
-1

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ía
  • has_category() verificará si la entrada tiene asignada una categoría específica

Por tu descripción, sospecho que te refieres a lo segundo.

27 mar 2014 21:22:01
1
-2

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
        }
7 ene 2016 11:46:16
Comentarios

Estás completamente en el camino equivocado aquí. Me encantaría ver algún tipo de explicación que explique por qué querrías usar get_categories

Pieter Goosen Pieter Goosen
7 ene 2016 12:55:11