Verifică dacă tipul de postare are termen
Am un tip de postare personalizat, numit articles
. De asemenea, am creat o taxonomie numită subject
. Fiecare articol are un subiect, la fel cum postările au categorii.
Acum problema. Când sunt pe page-articles.php
(page-slug.php
), trebuie să verific ce subiect are articolul. Cum pot face asta?! Am căutat pe internet zile întregi fără să găsesc vreo soluție.
Mă gândesc că într-un fel trebuie să verific taxonomia subiectului dacă se potrivește cu un criteriu. Cum ar fi:
if (is_term('news', 'subject'){
// execută acest cod
}
Dar chiar nu-mi dau seama cum funcționează! Funcția is_term
nu face asta, și nu pot găsi nicio altă funcție!

if( has_term( 'jazz', 'genre' ) ) {
// fă ceva
}

Am încercat codul de mai jos și funcționează - este acesta ceea ce cauți?
<?php
// preia tipul tău personalizat de postări și le afișează pe toate
query_posts('post_type=articles&posts_per_page=-1');
if ( have_posts() ) : while ( have_posts() ) : the_post();
// poți afișa titlul, legătura permanentă etc. oriunde în buclă
// preia toate elementele din taxonomia personalizată
$terms = get_the_terms($post->ID, 'Subject');
// parcurge fiecare termen și verifică
foreach ( $terms as $term ) {
if($term->name == 'Termenul pe care îl verifici') {
// efectuează acțiuni aici
}
}
endwhile; endif;
?>
Înlocuiește 'Termenul pe care îl verifici' de mai sus cu numele real al subiectului pe care îl verifici, nu cu slug-ul.
Editare: Nu sunt expert în performanța bazelor de date, așa că nu sunt sigur dacă aceasta este cea mai optimă metodă pentru a obține informațiile pe care le cauți - sunt deschis la sugestii din partea altora.

Am avut și eu o luptă interesantă cu acest lucru.
Folosesc http://codex.wordpress.org/Function_Reference/get_the_terms http://codex.wordpress.org/Function_Reference/is_object_in_term
A trebuit să afișez titluri de categorii și alte metadate în funcție de prezența etichetelor de taxonomie.
Am obținut rezultate imprevizibile cu is_object_in_term verificând un ARRAY de etichete specifice, dar poate ceea ce am făcut este util pentru altcineva. Am reușit în cele din urmă să funcționeze folosind NULL, dar trebuia doar să verific dacă o taxonomie exista și orice termeni sub ea se aplicau postării vizualizate, astfel încât să pot afișa anumite elemente.
Presupun că dacă cauți doar UN singur termen, exemplele standard de pe pagina codex ar trebui să te ajute. Ceva de genul...
if ( is_object_in_term( $post->ID, 'news', 'subject' ) ) :
echo 'DA';
else :
echo 'NU';
endif;
Codul meu relevant mai jos:
$heading_nicename = array('Categorie','Cartiere','Coduri Poștale','Agenții Membri','Cele mai apropiate mijloace de transport public');
$tax_slug = array('category','neighborhoods','zip_codes','member_agencies','nearest_public_transportation');
$heading_key = 0;
$termindex = 0;`
foreach ( $tax_slug as $taxonomy ) {
//folosit pentru a afișa termenii ca linkuri
$object_terms = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'all'));
//folosit într-o verificare pentru a vedea dacă termenii taxonomici se aplică postării
$o_terms = get_the_terms( $post->ID, $taxonomy );
if ( $o_terms && ! is_wp_error( $o_terms ) ) {
$check_these_terms = array();
}
foreach ( $o_terms as $term ) {
$check_these_terms[] = $term->slug;
//echo $term->slug.'<br/>';
}
$o_list = join( ", ", $check_these_terms );
//echo 'taxonomy: '.$taxonomy.'<br/>';
//echo 'terms: '.$o_list.'<br/>';
//rezultate imprevizibile
//if ( is_object_in_term( $post->ID, $taxonomy, array($o_list ) ){
//echo '<h4>'.$heading_nicename[$heading_key].'</h4>';
//}
//Se dovedește a fi o verificare pentru ORICE termen sub o taxonomie
if ( is_object_in_term( $post->ID, $taxonomy, null ) ){
echo '<h4>'.$heading_nicename[$heading_key].'</h4>';
}
$heading_key++;
echo '<p>';
$endindex = count($object_terms);
$termloop = 0;
foreach ($object_terms as $term) {
echo '<a href="' . esc_attr(get_term_link($term, $taxonomy)) . '" title="' . sprintf( __( "Vezi toate postările din %s" ), $term->name ) . '" ' . '>' . $term->name.'</a>';
//curăță virgulele
if ($termloop !== ($endindex - 1)){
echo ', ';
$termloop++;
}
$termindex++;
}
echo '</p>';
}`
