Dichiarazione condizionale per categorie di custom post type

27 mar 2014, 16:36:52
Visualizzazioni: 16K
Voti: 1

Vorrei mostrare un testo che dipende dalla mia tassonomia personalizzata di categoria, come:

se la categoria del custom post type è X, allora mostra Testo Y.

Ho provato questo codice, ma non funziona:

global $post; 
if (($post->post_type == 'myposttype') && is_category('slug-name-of-cat')) {
    echo 'Il mio testo';
}

Qualche idea?

2
Commenti

Prova a usare is_tax('taxonomy', 'term') - Vedi Codex

Howdy_McGee Howdy_McGee
27 mar 2014 16:44:44

C'è anche uno spazio nel tuo "is _category". Dovrebbe essere "is_category". E controlla bene che lo slug sia corretto. Hai davvero inserito "slug-" nel tuo slug di categoria?

mrwweb mrwweb
27 mar 2014 17:30:43
Tutte le risposte alla domanda 3
2

is_category() non funziona sulle pagine di archivio delle tassonomie personalizzate. Il tag condizionale corretto qui è is_tax() che accetta il nome della tassonomia come primo parametro e una stringa|int|array di nomi, slug o ID dei termini come secondo parametro.

Quindi la tua intera istruzione condizionale può essere simile a:

if ( is_tax( 'my_taxonomy', 'slug-name-of-the-term') ) {
    echo 'My text';
}

MODIFICA

Inoltre, per verificare se un post appartiene a un termine specifico, dovresti usare has_term() per testare il termine specifico

global $post; 
if (    ( $post->post_type == 'myposttype' ) 
     && has_term( 'slug-name-of-the_term', 'my_taxonomy' )
) {
    echo 'My text';
}
7 gen 2016 12:45:08
Commenti

Serve ancora un punto e virgola dopo quella riga di echo. ;-)

heytricia heytricia
23 giu 2017 23:07:04

la versione "edit" ha funzionato per me

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

Le funzioni condizionali is_* lavorano sulla query, non sul post corrente. In altre parole, ti dicono informazioni riguardo alla pagina in cui ti trovi, ma non riguardo al post corrente.

  • is_category() verificherà se la pagina corrente è un archivio di categoria
  • has_category() verificherà se il post ha una specifica categoria assegnata

Dalla tua descrizione, sospetto che tu intenda quest'ultima.

27 mar 2014 21:22:01
1
-2

Consulta questo codex per una comprensione dettagliata: https://codex.wordpress.org/Function_Reference/get_categories

Puoi fare qualcosa del genere:

        $args = array(
                'taxonomy'     => **$your_taxonomy**,
                'orderby'      => name,
                'title_li'     => $title,
        );
        $sub_cats = get_categories( $args );
        if( !empty($sub_cats) ) {
         // stampa il nostro output
        }
7 gen 2016 11:46:16
Commenti

Sei completamente fuori strada qui. Mi piacerebbe vedere una spiegazione che illustri perché vorresti usare get_categories

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