Declarație condițională pentru categoria de tip post personalizat

27 mar. 2014, 16:36:52
Vizualizări: 16K
Voturi: 1

Aș dori să afișez un text în funcție de categoria din taxonomia mea personalizată, astfel:

dacă categoria tipului de post personalizat este X, atunci afișează Textul Y.

Am încercat acest cod, dar nu funcționează:

global $post; 
if (($post->post_type == 'myposttype') && is_category('slug-name-of-cat')) {
 echo 'Textul meu'

 }

aveți idei?

2
Comentarii

Încearcă să folosești is_tax('taxonomy', 'term') - Vezi Codex

Howdy_McGee Howdy_McGee
27 mar. 2014 16:44:44

Există și un spațiu în "is _category". Ar trebui să fie "is_category". Și verifică dacă slug-ul este corect. Chiar ai pus "slug-" în slug-ul categoriei tale?

mrwweb mrwweb
27 mar. 2014 17:30:43
Toate răspunsurile la întrebare 3
2

is_category() nu funcționează pe paginile de arhivă ale taxonomiilor personalizate. Condiția corectă de utilizat aici este is_tax(), care acceptă numele taxonomiei ca prim parametru și un șir|int|array de nume de termeni, slug-uri sau ID-uri ca al doilea parametru.

Deci întreaga declarație condițională poate arăta astfel:

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

EDIT

În plus, pentru a verifica dacă un post aparține unui anumit termen, ar trebui să folosești has_term() pentru a testa termenul specific

global $post; 
if (    ( $post->post_type == 'myposttype' ) 
     && has_term( 'slug-name-of-the_term', 'my_taxonomy' )
) {
    echo 'Textul meu';
}
7 ian. 2016 12:45:08
Comentarii

Încă mai ai nevoie de un punct și virgulă după acea linie de echo. ;-)

heytricia heytricia
23 iun. 2017 23:07:04

versiunea "edit" a funcționat pentru mine

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

Funcțiile condiționale is_* funcționează pe interogare, nu pe postarea curentă. Cu alte cuvinte, ele vă spun lucruri despre pagina pe care vă aflați, însă nu despre postarea curentă.

  • is_category() va verifica dacă pagina curentă este o arhivă de categorii
  • has_category() va verifica dacă postarea are o categorie specifică atribuită

Din descrierea dumneavoastră, bănuiesc că vă referiți la cea din urmă.

27 mar. 2014 21:22:01
1
-2

Consultați acest codex pentru o înțelegere detaliată: https://codex.wordpress.org/Function_Reference/get_categories

Puteți face ceva de genul acesta:

        $args = array(
                'taxonomy'     => **$your_taxonomy**,
                'orderby'      => name,
                'title_li'     => $title,
        );
        $sub_cats = get_categories( $args );
        if( !empty($sub_cats) ) {
         // afișează conținutul nostru
        }
7 ian. 2016 11:46:16
Comentarii

Ești complet pe drumul greșit aici. Mi-ar plăcea să văd o explicație care să dea motive pentru care ai vrea să folosești get_categories

Pieter Goosen Pieter Goosen
7 ian. 2016 12:55:11