Gönderi kategorileri ve gönderi kategorisi sayfaları, kullanıcıların içerikle ilgili gönderilere göz atmalarına yardımcı oldukları için çok kullanışlı bir WordPress özelliğidir. Bu gönderiler, ziyaretçilerin erişim kolaylığı için tek bir sayfada gruplandırılabilir. Fakat mülayim veya kötü tasarlanmış bir kategori sayfası, ziyaretçilerin sitenizde kalmasını engelleyebilir ve genel sıralamanıza zarar verebilir. Bu yüzden web sitesi oluşturucuları, sitelerine ziyaretçileri cezbeden ve bir süre daha kalmalarını sağlayan özel bir şey vermek için genellikle özel kategori şablonları oluşturur.
WordPress’in çok yönlülüğü sayesinde, bazı kod düzenlemeleriyle kolayca özel şablonlar oluşturabilirsiniz. Bunu, uygun arşiv dosyalarını düzenleyerek veya WordPress şablon yapısına ve hiyerarşisine uygun kendi arşiv dosyalarınızı oluşturarak yapabilirsiniz. Bu yazıda, özel bir WordPress kategori şablonu kullanmanın nedenlerine ve bunun nasıl yapılabileceğine bir göz atacağız.
Bu konuyu kavramanıza yardımcı olmak için, bu makaleyi aşağıdaki bağlantılardan birine tıklayarak atlayabileceğiniz birkaç bölüme ayırdık:
-
Ayrı bir özel şablon dosyası oluşturma
-
Koşullu ifadeleri kullanma
-
Özel kategoriye özel CSS yazma
-
Eklentileri ve widget’ları kullanma
Bu makalenin, kod ve kod işleme ile ilgili olduğu için daha deneyimli WordPress kullanıcılarına yönelik olduğunu vurgulamalıyız. Bu yüzden mevcut kodlama bilginize ve deneyiminize bağlı olarak daha fazla okuma yapmanız gerekebilir. Fakat daha sonra ziyaretçilerinizi şaşırtmak için çarpıcı kategori sayfaları oluşturabileceğiniz için, çabaya değeceğinden emin olabilirsiniz.
WordPress Şablon Hiyerarşisini Anlamak
Sayfa şablonları ve sayfa bölümü şablonları, herhangi bir WordPress temasının merkezinde yer alır. Bir sayfayı görüntülemek için WordPress, önceden tanımlanmış bir hiyerarşik şablon yapısını izleyen belirli dosyaları arar. Bu yapıyı aşağıdaki şemada görebilirsiniz.
Bu şemanın (yukarıdaki resimde kırmızıyla işaretlenmiş) kategori sayfalarının oluşturulmasıyla ilgili bir alt bölümüne odaklanacağız.
kategori-slug.php => kategori-id.php => kategori.php => arşiv.php => indeks.php
Bir kategori sayfasında görüntülenecek bir şablon ararken, WordPress bu sırayla (soldan sağa) arama yapar. Anlamı, herhangi bir kategori-slug.php dosyası bulunmazsa, kategori-id.php’yi arayacaktır. Bu dosya bulunamazsa, son yedek dosya olarak index.php’ye ulaşana kadar bir sonrakini arar ve böyle devam eder.
Çoğu temanın, tema klasörü içinde birarchive.php dosyası veya bir Category.php dosyası vardır. Siteniz/wp-content/themes/your-theme altında bulunmalıdır. Bu dosya, tüm arşiv sayfalarını veya tüm kategorileri oluşturmak için tema şablonunu temsil eder. Belirli bir kategori için özel bir şablon oluşturmak üzere yalnızca o kategoriye uygulanacak bir dosya oluşturmanız gerekir. Bu durum bir kategori-slug.php dosyası veya bir kategori-id.php dosyası olabilir. Elbette bilgi ve kimliği, özel bir şablon oluşturduğunuz kategorinin bilgi/kimliğinin gerçek adıyla değiştirmelisiniz.
Gönderiler > Kategoriler’e giderek bir gönderi kategorisinin hangi bilgiye sahip olduğunu kontrol edebilirsiniz. Kategorinizin bulunduğu satırı bulun ve bilgi adını görmek için Bilgi sütununu kontrol edin.
Örnek ekran görüntüsünde, Fitness kategorisine karşılık gelen bilgi uygunluk, Spor Bilimi için olan ise spor bilimidir. Bu yüzden uygun dosya adları kategori-fitness.php ve kategori-spor-bilim.php olacaktır. Dosya tanımlayıcısı olarak kimliği kullanmak istiyorsanız, tek yapmanız gereken kimlik numarasını eklemektir. Örneğin kategori kimliği 24 ise, uygun dosya adı kategori-24.php’dir. Bu makalenin özel CSS bölümünde verilen açıklamaya atlayarak bir gönderi kategorisinin kimliğini öğrenebilirsiniz.
Artık özel bir kategori şablonu oluşturmaya devam edebilirsiniz. Sunucunuzda bulunan dosyaları eklemeniz veya düzenlemeniz gerekeceğinden, FTP’yi nasıl kullanacağınızı bilmenin bu işlem için bir ön koşul olduğunu lütfen unutmayın. Bunu nasıl yapacağınızdan emin değilseniz, bu makalenin devamına geçmeden önce FTP ile çalışma hakkındaki makaleyi okuduğunuzdan emin olun.
WordPress’te Özel Kategoriler Şablonu Nasıl Oluşturulur
Özel bir kategori şablonu oluşturmanın birkaç yolu vardır. Aşağıdaki bölümlerde, kullanabileceğiniz üç kodlama yöntemini ele alacağız. Bunlar özel şablon dosyaları oluşturmak, tek bir arşiv dosyası (category.php veya archive.php) içinde koşullu ifadeler kullanmak ve kategoriye özgü özel CSS kodu oluşturmaktır. Bu yöntemlerin her birinin, ayrıca ele alacağımız avantajları ve dezavantajları vardır. Ve her üç yönteme de özenle seçilmiş kod örnekleri eşlik edecek. Bununla birlikte kullandığımız örnekler bir noktayı göstermek için var ve onları geliştirmekten memnuniyet duyarız.
Hatta aynı anda birden fazla yöntemi de kullanabilirsiniz. Bu çoğunlukla özel CSS yazmak için geçerlidir, çünkü muhtemelen CSS kullanarak oluşturduğunuz şablonu biçimlendireceksiniz. Özel şablonunuzu kullanarak görüntülediğiniz kategori içeriği, görsel olarak çekici gelmeyebilecek varsayılan tarayıcı stillerine (veya varsayılan tarayıcı ve tema stilizasyonunun bir karışımına) sahip olacaktır. Bu yüzden şablonu oluştururken tam olarak aklınızdaki görünümü elde etmek için daha fazla stilize etmeniz gerekebilir.
Bunu söyledikten sonra, özel kategori şablonları oluşturma yöntemlerine geçebiliriz.
Ayrı Özel Şablon Dosyası Oluşturma
Ayrı bir şablon dosyası oluşturmak, özel bir şablon oluşturmanın en iyi yoludur. Fakat oldukça karmaşık olabilir. Bazen bunu, temanızın archive.php veya Category.php dosyasının içeriğini kopyalayıp daha sonra düzenleyerek yapabilirsiniz. Bazen, özel kategori şablon dosyanızı sıfırdan oluşturmak en iyisidir. Hangi yöntemi kullanırsanız kullanın, yeniyi FTP yoluyla tema klasörünüze yüklemeniz gerekecek; klasör yolu siteniz/wp-content/temalar/temanız olmalıdır. Fakat yanlış kodlama sitenizi bozabileceğinden, yeni oluşturulan özel şablon dosyasını tema klasörünüze yüklemeden önce sitenizin yedeğini almanızı önemle tavsiye ederiz!
Aşağıda, kendi başınıza kullanabileceğiniz ve daha fazla düzenleyebileceğiniz bir örnek verilmiştir. Örneği açıklığa kavuşturmak için, bu kod yeni oluşturulan bir Category-fitness.php dosyasına yerleştirilecektir. Hatta kod bölümlerini de teker teker açıklayacağız.
Örnek:
<?php $category_query = new WP_Query( array( 'category_name' => 'fitness', 'posts_per_page' => '4' ) ); get_header(); ?> <div class="fitness-category-title-image"> <img src="https://hikmetdokumaci.com/blog/wordpress-categories-template/<?php echo esc_url( get_template_directory_uri() ."/fitness.jpg' ); ?>" alt="<?php esc_attr_e( 'Fitness Category Image', 'text-domain-name' ); ?>"/> </div> <h1 class="archive-title"><?php single_cat_title( '', true ); ?>: latest posts</h1> <?php if ( category_description() ) { ?> <div class="archive-meta"><?php echo category_description(); ?></div> <?php } ?> <div class="main-content"> <?php if ( $category_query->have_posts() ) : ?> <?php while ( $category_query->have_posts() ) : $category_query->the_post(); ?> <div class="post-content"> <div><?php the_post_thumbnail( 'medium' ); ?> </div> <a itemprop="url" href="https://hikmetdokumaci.com/blog/wordpress-categories-template/<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><h2><?php the_title(); ?></h2></a> <p><?php echo wp_kses_post( _substr( get_the_excerpt(), 0, 80 ) ); ?>...</p> </div> <?php endwhile; ?> <?php wp_reset_postdata(); ?> <?php else : ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?> </div> <?php get_sidebar(); get_footer(); ?>
Lütfen bu kodu kopyalarken, düzgün çalışması için “_substr” ifadesinin her iki örneğinden de alt çizgiyi (“_”) kaldırmanız gerektiğini unutmayın. Yani kodunuz bunun yerine $excerpt = substr ve $short_excerpt = substr olmalıdır.
Açıklama:
$category_query = new WP_Query( array( 'category_name' => 'fitness', 'posts_per_page' => '4' ) );
Bu dize, WordPress Döngüsü ile birlikte kullanılır ( bkz. 3).
2. Baştaki kısım birkaç bölümden oluşmaktadır. İlk kısım, FTP aracılığıyla ana temanın klasörüne yüklenen fitness.jpg adlı bir resmi gösterir. Daha sonra kategori başlığı ve “: son gönderiler” dizesinden oluşan bir başlık görüntülenir (sonuç, “Beslenme: son gönderiler” gibi bir şey olur). Son olarak kategori açıklaması varsa gösterilecektir.
<div class="fitness-category-title-image"> <img src="https://hikmetdokumaci.com/blog/wordpress-categories-template/<?php echo esc_url( get_template_directory_uri() ."/fitness.jpg' ); ?>" alt="<?php esc_attr_e( 'Fitness Category Image', 'text-domain-name' ); ?>"/> </div> <h1 class="archive-title"><?php single_cat_title( '', true ); ?>: latest posts</h1> <?php if ( category_description() ) { ?> <div class="archive-meta"><?php echo category_description(); ?></div> <?php } ?>
3. Ana bölüm bir if… else… ifadesinden oluşur. if bölümünün içinde, içinde karşılık gelen kodla birlikte bir while döngüsü vardır. Bu kod bölümünün tamamı, bir WordPress Döngüsünün daha temel örneklerinden birini temsil eder. WordPress Döngüsü, belirli bir sorguya dayalı olarak gönderilerden veri çıkarır ve uygun kod blokları içinde yazılan eylemleri gerçekleştirir. Spesifik olarak bir gönderi sorguyla eşleşirse, bilgileriyle uygun içerik sonrası bloğu yapılır. Aksi takdirde, ‘Üzgünüz, kriterlerinize uyan gönderi yok’ şeklinde bir mesaj. ekranda gösterilir.
<?php if ( $category_query->have_posts() ) : ?> <?php while ( $category_query->have_posts() ) : $category_query->the_post(); ?> <div class="post-content"> <div><?php the_post_thumbnail( 'medium' ); ?> </div> <a itemprop="url" href="https://hikmetdokumaci.com/blog/wordpress-categories-template/<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> <h2><?php the_title(); ?></h2></a> <p><?php echo wp_kses_post( _substr( get_the_excerpt(), 0, 80 ) ); ?>...</p> </div> <?php endwhile; ?> <?php wp_reset_postdata(); ?> <?php else : ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?>
İçerik sonrası bölüm koduna daha yakından bakma
<div class="post-content"> <div><?php the_post_thumbnail( 'medium' ); ?> </div> <a itemprop="url" href="https://hikmetdokumaci.com/blog/wordpress-categories-template/<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"> <h2><?php the_title(); ?></h2></a> <p><?php echo wp_kses_post( _substr( get_the_excerpt(), 0, 80 ) ); ?>...</p> </div>
aşağıdakileri içerdiğini görebilirsiniz:
-
orta boy yazı küçük resmi
-
Tıklandığında gönderiye doğru şekilde bağlanan blog gönderisi başlığı ve
-
gönderi alıntısının ilk 80 karakteri.
Elbette, kodunuzu özelleştirmek için bu değerleri ayarlayabilirsiniz.
Lütfen örneğimizde wp_reset_postdata() işlevini de kullandığımızı unutmayın. Bu işlev, özellikle birden çok döngü kullanıyorsanız, yani bu döngülere karşılık gelen birden çok sorgu kullanıyorsanız kullanışlıdır. Global $post değişkeninin değerini, ana sorguyu yürütürken sahip olduğu içeriğe sıfırlar.
4. Son olarak get_header(), get_footer() ve get_sidebar() fonksiyonları. Yan yana kullanılmasalar da aynı işlevi gördükleri için dördüncü bölümde gruplandırdık. Sırasıyla üst bilgi, alt bilgi ve kenar çubuğu olmak üzere karşılık gelen şablonları yüklerler.
Koşullu İfadeleri Kullanma
Koşullu ifadeleri kullanarak, tek bir dosyayı düzenleyerek birden çok şablon oluşturabilirsiniz. Daha önce bahsettiğimiz WordPress şablon hiyerarşisi nedeniyle ve temanızın içeriğine bağlı olarak bu dosya ya Category.php,archive.php ya da index.php olacaktır. Tema dosyalarını değiştirirken, tema güncellendiğinde değişiklikleri kaybetmemek için her zaman değiştirilen dosyanın bir yedeğini oluşturduğunuzdan emin olun.
Bu amaç için en önemli fonksiyon is_category fonksiyonudur. Bir sayfanın kategori arşiv sayfası olup olmadığını belirlemek için bu işlevi kullanırız. Bu yüzden kodu seçici olarak uygulamak için kullanabiliriz. Parametresiz bırakılırsa, bu kod tüm kategori sayfalarına uygulanacaktır. Kodu belirli bir kategoriye veya bir kategori dizisine uygulamak için bir parametre (kategori adı, bilgi, kimlik veya daha önce belirtilen tüm parametrelerin bir dizisi) de kullanabilirsiniz,…