Declarație condițională pentru categoria de tip post personalizat
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?
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';
}

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 categoriihas_category()
va verifica dacă postarea are o categorie specifică atribuită
Din descrierea dumneavoastră, bănuiesc că vă referiți la cea din urmă.

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
}
