WordPress ile kurulmuş sitenizde bazı yazılarınızın birden çok kategoride yer almasını istiyor ama anasayfa ya da arşivlerde yazılar listelenirken kategori bilgisi olarak tek kategorinin gözükmesini istiyor olabilirsiniz. Örneğin bu sitenin anasayfasına baktığınızda yazılara ilişkin resimlerin sol üstünde tek kategori adı göreceksiniz. Halbuki çoğu yazının birden çok kategorisi var. Bu işlemi maalesef WordPress’in mevcut kodları ile yapamıyoruz çünkü WordPress’te birincil kategori(primary category) seçimi bulunmuyor. “Yoast SEO” ve “WP Select Primary Category” eklentileri ise bu özelliği WordPress’e katıyor.
Eğer sitenizde Yoast SEO eklentisini kullanıyorsanız yazılarınızın için birden çok kategori seçtiğinizde “birincil yap” linkini kategori yanında görebilirsiniz(Gutenberg editörde kategori altında seçim alanı mevcut).
Birincil kategoriyi temamızda göstermek için ise aşağıdaki kodu, kategori adının ve linkinin gözükmesini istediğimiz yere yapıştırmamız yeterli:
<?php
// Birincil kategoriyi ya da ilk kategoriyi göster
$category = get_the_category();
$useCatLink = true;
// Atanmış bir kategori varsa.
if ($category){
$category_display = '';
$category_link = '';
if ( class_exists('WPSEO_Primary_Term') )
{
// Yoast fonksiyonu aktifse ve atanmışsa birincil kategoriyi göster,
$wpseo_primary_term = new WPSEO_Primary_Term( 'category', get_the_id() );
$wpseo_primary_term = $wpseo_primary_term->get_primary_term();
$term = get_term( $wpseo_primary_term );
if (is_wp_error($term)) {
// Sorun çıkarsa ilk kategoriyi göster
$category_display = $category[0]->name;
$category_link = get_category_link( $category[0]->term_id );
} else {
// Birincil kategori
$category_display = $term->name;
$category_link = get_category_link( $term->term_id );
}
}
else {
// Temel olarak ilk atanan kategoriyi birincil kategori olarak belirle
$category_display = $category[0]->name;
$category_link = get_category_link( $category[0]->term_id );
}
// Kategoriyi göster
if ( !empty($category_display) ){
if ( $useCatLink == true && !empty($category_link) ){
echo '<span class="post-category">';
echo '<a href="'.$category_link.'">'.htmlspecialchars($category_display).'</a>';
echo '</span>';
} else {
echo '<span class="post-category">'.htmlspecialchars($category_display).'</span>';
}
}
}
?>
Kod kaynağı: Birincil Kategori Kullanma
WP Select Primary Category eklentisi, bir kategoriyi birincil kategori olarak atamanızı sağlıyor. Eklentiyi kurup etkinleştirdikten sonra klasik editör kullanıyorsanız yazının sağ tarafında “Select Primary Category” diye yeni bir alan görebilirsiniz.
Klasik editör kullanmıyorsanız, yazı sayfasının sağ alt bölümünde (Belge bölümünde) “Select Primary Category” seçeneği aktifleşecektir.
Birincil kategorinizi tema dosyanızda göstermek için ise şu kodu kullanabilirsiniz:
<?php
$primary_selected_category = get_post_meta( $post->ID, 'select_primary_category', true );
$category_id = get_cat_ID( $primary_selected_category );
$category_link = get_category_link( $category_id );
echo '<a href="'.esc_url( $category_link ).'" title="'.$primary_selected_category.'">'.$primary_selected_category.'</a>';
?>