WordPress’de Özel Gönderi Türlerinin Kategorisini Kategori Sayfalarında Göstermek

WordPress’de category.php ‘post’ türündeki içeriklerin içeriklerin bağlı olduğu kategorileri listeler. Custom Post Type yöntemi ile Özel Gönderi (Özel Yazı) eklediğimizde kategori sayfasında gönderinin bağlı olduğu kategorilerinin kategori sayfasında görülmemesi sorunu ortaya çıkmaktadır. Yazımızda bu özel yazı türleri kategori sorununa çözüm bulmaya çalıştık. Kısaca Custom Post Type; Blog yazılarımızdan ayrı farklı konsepte içerikler girmemizi ve bu içeriklerin Blog yazılarından ayrıştırıp daha düzenli bir yapı oluşturmamızı sağlar. Bir nevi ikinci Blog menüsü oluşturmamızı sağlar. Fakat bu gönderi yöntemi ile eklediğimiz içeriklerin bağlı oldukları kategorilerin kategori listeleme sayfalarında listelenmediği görülmüştür. Özel gönderi türlerinin kategorilerini kategori sayfalarında göstermek için aşağıdaki filtre kod bloğunu function.php dosyanıza eklemeniz yeterlidir. Örneğin kitap kategorisinde özel gönderi türü ayarlamış isek noktalı yere kitap yazılacak. Buraya dikkat: custom-post-type.php dosyamızda array değerinin ismi baz alınır. Yani kategori kitap olabilir ama array değerini kitaplar yazmışsak; noktalı yere kitaplar yazın. Özel yazı türlerinin kategorilerinin kategori sayfasında çıkmama sorununun bu kodlarla çözülmüş olması gerekir. Kod denenmiştir çalışıyor. Custom Post Type yöntemi ile eklenen özel yazı türlerinin kategori sayfalarında kategorilerinin listelenmiş olduğunu göreceksiniz.

function namespace_add_custom_types( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars[‘suppress_filters’] ) ) {
$query->set( ‘post_type’, array(
‘post’, ‘nav_menu_item’, ‘………..buraya yazılacak……….’
));
return $query;
}
}
add_filter( ‘pre_get_posts’, ‘namespace_add_custom_types’ );

Bu işlemde hata alırsanız. Linkleri seo dostu yapmamız gerek. Aşağıdaki kodu functions.php dosyasına ekleyin.

    add_filter(‘category_rewrite_rules’, ‘no_category_base_rewrite_rules’); function no_category_base_rewrite_rules($category_rewrite) { $category_rewrite=array(); $categories=get_categories(array(‘hide_empty’=>false)); foreach($categories as $category) { $category_nicename = $category->slug; if ( $category->parent == $category->cat_ID ) $category->parent = 0; elseif ($category->parent != 0 ) $category_nicename = get_category_parents( $category->parent, false, ‘/’, true ) . $category_nicename; $category_rewrite[‘(‘.$category_nicename.’)/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$’] = ‘index.php?category_name=$matches[1]&feed=$matches[2]’; $category_rewrite[‘(‘.$category_nicename.’)/page/?([0-9]{1,})/?$’] = ‘index.php?category_name=$matches[1]&paged=$matches[2]’; $category_rewrite[‘(‘.$category_nicename.’)/?$’] = ‘index.php?category_name=$matches[1]’; } global $wp_rewrite; $old_base = $wp_rewrite->get_category_permastruct(); $old_base = str_replace( ‘%category%’, ‘(.+)’, $old_base ); $old_base = trim($old_base, ‘/’); $category_rewrite[$old_base.’$’] = ‘index.php?category_redirect=$matches[1]’; return $category_rewrite; }

Sonra WordPress yönetim panelinde ayarlara gidip kalıcı bağlantılardaki ayarları; aşağıdaki resimde gösterildiği gibi değiştirip kaydedin. Daha sonra Web sitenizde kategorilerin listelendiği sayfayı shift+5 ile yenileyin. Özel gönderi türlerinin bağlı olduğu kategoriyi tıklayınca, ilgili kategori sayfasına gidecektir. Orada ilgili kategorilere ait gönderilerin listelendiğini göreceksiniz. Denendi hatasız çalışıyor. Yakın zamanda custom_post_type (özel gönderi türü) nasıl eklenir? bu konuda makale yazılacaktır. Kalın sağlıcakla..

Not: /%postname%/ yazıyor, onu seçiyoruz. Kategori temelinde ise sadece nokta işareti koyuyoruz.


Kategori: Web Tasarım | Yayınlanma Tarihi: 20 Kasım 2021 - 15:33:33 | Güncellenme Tarihi: 13 Mart 2022 - 16:14:50 Yazar: woweso_admin | Yorum sayısı: Yorum yok | Okunma Sayısı: 1773



Etiketler: , , , , , , , , , , , ,



Yorumlar


Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Mesajınız *

Not: Yorumlarınız en az 30 karakter olmalıdır. Kalan karakter 30