İlk gönderi terimini al


10

Özel bir gönderi türünün yalnızca ilk terimini nasıl alırım?
Hepsini alabilirim - sorun değil. Hepsini kapmak için kullandığım şey

<?php foreach ($terms as $term) {echo '<a href="'.get_term_link($term->slug, 'sitecat').'">'.$term->name.'</a>,';} ?> >> <a href="<?php the_permalink(); ?>"><?php the_title('', ''); ?></a></h2></span>

Kodumu kullanarak bir cevap takdir ediyorum ama herhangi bir yardım en memnuniyetle

Yanıtlar:


23

'İlk' sınıflandırma ile ne demek istediğinden emin değilim ... ama,

$terms = get_the_terms( $post->ID, 'mytaxonomy' );

sınıflandırma terimi nesneleri dizisini döndürür.

$term = array_pop($terms);

Dizideki ilk terimi size verir. Ve sonra:

echo '<a href="'.get_term_link($term->slug, 'mytaxonomy').'">'.$term->name.'</a>,'

(Boş bir dizi veya hata döndürülmesi durumunda bazı if ifadeleri eklemek isteyebilirsiniz (bkz. is_wp_error)


sadece bunu denedim .. bir hata alıyorum: Catchable ölümcül hatası: WP_Error sınıfının nesnesi, /home/content/14/6469114/html/wp-content/themes/sagive/single-website.php satırındaki dizeye dönüştürülemedi 40
Sagive SEO

satır 40: <? php $ terms = get_the_terms ($ post-> ID, 'sitecat'); ($ terimleri) array_pop; echo '<a href="'.get_term_link($term-> slug,' sitecat ').' "> '. $ term-> name.' </a> '; ?>
Sagive SEO

tamam .. hata benim tarafımda oldu - cevabınız değil;) çok teşekkürler dostum
Sagive SEO

5

PHP 5.4'ten itibaren, bir diziyi doğrudan dereference edebilirsiniz , böylece ilk terimi almak için basitçe yapabilirsiniz.

$first_term = get_the_terms( $post->ID, 'TAXONOMY_NAME' )[0];
var_dump( $first_term );

İlk terimin belirli bir özelliğine ( terim adını söyleyin) ihtiyacınız varsa , aşağıdakileri yapabilirsiniz

$first_term_name = get_the_terms( $post->ID, 'TAXONOMY_NAME' )[0]->name;
var_dump( $first_term_name );

DÜZENLE

Sadece bir not, bunun geri çekilmeleri var, çünkü WP_Errorsınıflandırma geçersizse bir nesne alacaksınız . Ayrıca, döndürülen dizi boşsa, tanımlanmamış bir dizi anahtarı uyarısı da alırsınız, bu yüzden bunu dikkatli kullanın.


0

Benim için çalıştı. Metin olarak yalnızca ilk kategoriyi getirir, çapa içermez.

$terms = get_the_terms( $post->ID , 'your_custom_taxonomy' ); 
foreach( $terms as $term ) { 
    print $term->name;
    break;
    unset($term);
}

1
Ne "senin için çalıştı"? Sidenote: İfadenizi break;gerçekten durduracak unset, asla tetiklenmeyecek ve sadece 1. öğe işlenecek.
Kaiser

unset( $term );olmalıdır sonra sizin foreachdöngü değil, içeride :-) o
Pieter Goosen

0

nesnenin anahtarına doğrudan erişmeye ne dersiniz?

$terms = get_the_terms( $post->ID, 'sitecat' );
$first_term = $terms[0];

böylece nesneye erişebilirsiniz.

echo $first_term->name;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.