BU DERSİN BAŞLIKLARI
Yönetim panelinden, Yazılar->Yeni Ekle menüsü ile oluşturduğumuz bütün içerikler birer yazıdır. WordPress’in yazı tipindeki içerikleri göstermek için kullandığı bir çok şablon türü vardır.
Bir yazıyı göstermek için, WordPress’in kullandığı şablon dosyaları şunlardır:
index.php
Eğer, temanızda, yazılarınıza özgü bir şablon dosyası yoksa, WordPress, tek yazılarınızı da yazı arşivinizi de, index.php
şablonu ile gösterir. Daha önce de bahsedildiği gibi, her WordPress temasının, bir index.php
dosyası içermesi zorunludur. Bir çok temel tema, yazıları göstermek için bu dosyayı kullanmayı tercih edebilir fakat bu dosyanın, bir yazı için şablon görevi yapması, temanızda bazı şablon dosyalarının, bulunmamasına bağlıdır. Yani index.php
dosyası bir can kurtaran simididir, bir içeriğin gösterimi için son çaredir.
Aşağıda Twnety Seventeen temasının index.php
dosyası, açıklamalı olarak verilmiştir:
<?php
/**
* Ana şablon dosyası
*
* Bu dosya bir WordPress temasının en kapsayıcı şablon dosyasıdır
* ve her tema için gerekli olan iki zorunlu dosyadan biridir.
* (diğeri style.css).
* WordPress, kendisi için hazırlanmış bir şablon bulamazsa,
* o içeriği göstermek için bu dosyayı kullanır
* Mesela, temada home.php dosyası yoksa,
* WordPress onun yerine bunu kullanır
*
* @link https://sitecenneti.com/wordpress/
*
* @package WordPress
* @subpackage Twenty_Seventeen
* @since 1.0
* @version 1.0
*/
get_header(); ?>
<div class="wrap">
<?php if ( is_home() && ! is_front_page() ) : ?>
<!-- Blog sayfası ana sayfa değilse, sayfa adını, sayfa başlığı olarak göster -->
<header class="page-header">
<h1 class="page-title"><?php single_post_title(); ?></h1>
</header>
<?php else : ?>
<!-- Blog sayfası ana sayfa ise, sayfa başlığı olarak 'İletiler' yaz -->
<header class="page-header">
<h2 class="page-title"><?php _e( 'İletiler', 'twentyseventeen' ); ?></h2>
</header>
<?php endif; ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
if ( have_posts() ) :
/* Döngüyü Başlat */
while ( have_posts() ) :
the_post();
/*
* Yazı formatlarına göre ayrı şablonlar oluşturmak istiyorsanız,
* bunu temanın template-parts/post/ dizininde, her format için,
* content-___.php adında şablonlar hazırlayarak yapabilirsiniz.
* (Dosya adındaki ___ yerine, yazı formatının adı gelmelidir.)
* Yazı formatına özel bir şablon yoksa content.php dosyası kullanılır
*/
get_template_part( 'template-parts/post/content', get_post_format() );
endwhile;
the_posts_pagination(
array(
'prev_text' => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Önceki sayfa', 'twentyseventeen' ) . '</span>',
'next_text' => '<span class="screen-reader-text">' . __( 'Sonraki sayfa', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),
'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Sayfa 'twentyseventeen' ) . ' </span>',
)
);
else :
get_template_part( 'template-parts/post/content', 'none' );
endif;
?>
</main><!-- #main -->
</div><!-- #primary -->
<?php get_sidebar(); ?>
</div><!-- .wrap -->
<?php
get_footer();
Yukarıdaki kodda görüldüğü gibi, önce, get_header()
ile header.php
dosyasını çağırıyoruz. Daha sonra, HTML kullanarak bütün sayfayı içine alacak bir div elemanı açıyoruz. Blog sayfasında isek, yazının başlığını çağırıyoruz, aksi taktirde bütün yazılar için “İletiler” şeklinde genel bir başlık atıyoruz ve yazı içeriğini şekillendirmek için, tekrar HTML elemanlarını kullanıyoruz. Sonra döngü başlıyor. Döngü içerisinde, bir şablon fonksiyonu olan;
get_template_part( 'template-parts/post/content', get_post_format() );
fonksiyonu ile, template-parts/post/
klasörleri içinde bulunan, content.php
adında, özel bir şablon parçasını çağırıyoruz. Bu şablon parçası dosyasının, Türkçe tercümesi ile birlikte, kod yapısı şöyledir:
<?php // template-parts/post/content.php
/**
* Tipi yazı olan içerikleri gösteren şablon parçasıdır
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/
*
* @package WordPress
* @subpackage Twenty_Seventeen
* @since 1.0
* @version 1.2
*/
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php
if ( is_sticky() && is_home() ) : // Blog sayfasında, ana sayfaya sbitlenmiş yazılar için bir icon kullandık
echo twentyseventeen_get_svg( array( 'icon' => 'thumb-tack' ) );
endif;
?>
<header class="entry-header">
<?php
if ( 'post' === get_post_type() ) { // Eğer sayfadaki içeriğin tipi bir yazı ise,
echo '<div class="entry-meta">';
if ( is_single() ) { // eğer ekrandaki tek bir yazı varsa
twentyseventeen_posted_on(); // yazarın adını ve yayın tarihini, link şeklinde göster,
} else { // ekranda tek bir yazı yoksa -yani yazı arşivinde isek-
echo twentyseventeen_time_link(); // yazların yayın tarihi göster
twentyseventeen_edit_link(); // ve bir "Düzenle" bağlantısı ver.
};
echo '</div><!-- .entry-meta -->';
};
if ( is_single() ) { // Eğer ekranda, tek bir yazı veya bir sayfa varsa,
the_title( '<h1 class="entry-title">', '</h1>' ); // başlığın göster,
} elseif ( is_front_page() && is_home() ) { // ekranda en son yazılarımızı gösteren bir ana sayfa varsa,
the_title( '<h3 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h3>' ); // yazıların başlığını göster
} else { // bunların haricindeki durumlarda,
the_title( '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' ); // yazıların başlığını göster
}
?>
</header><!-- .entry-header -->
<?php if ( '' !== get_the_post_thumbnail() && ! is_single() ) : // bir arşiv sayfasında isek ve yazının öne çıkan görseli varsa, ?>
<div class="post-thumbnail">
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail( 'twentyseventeen-featured-image' ); // 'twentyseventeen-featured-image' boyutlarında göster ?>
</a>
</div><!-- .post-thumbnail -->
<?php endif; ?>
<div class="entry-content">
<?php
/* Çeviriciler için, %s: Yazının adı */
the_content( // Yazının metnini getir
sprintf(
__( 'Okumaya devam et: <span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ),
get_the_title()
)
);
wp_link_pages( // Yazılar için sayfalama yap
array(
'before' => '<div class="page-links">' . __( 'Sayfalar:', 'twentyseventeen' ),
'after' => '</div>',
'link_before' => '<span class="page-number">',
'link_after' => '</span>',
)
);
?>
</div><!-- .entry-content -->
<?php
if ( is_single() ) { // Ekranda tek bir yazı varsa,
twentyseventeen_entry_footer(); // bu yazının kategori ve etiketlerini göster.
}
?>
</article><!-- #post-## -->
Bu şablon parçasında kullanılan ve Twenty Seventeen teması için yazılmış, dört adet fonksiyon dikkatimizi çekiyor. Bu fonksiyonlar şunlardır:
twentyseventeen_posted_on();
twentyseventeen_time_link();
twentyseventeen_edit_link();
twentyseventeen_entry_footer();
Bu fonksiyonlar, temanın inc/tempate-tags.php
dosyasında bulunmaktadır. Fonksiyonların kod yapıları, sırasıyla aşağıda verilmiştir:
// ======================================
// twentyseventeen_posted_on() fonksiyonu
// ======================================
if ( ! function_exists( 'twentyseventeen_posted_on' ) ) :
/**
* Prints HTML with meta information for the current post-date/time and author.
*/
function twentyseventeen_posted_on() {
// Get the author name; wrap it in a link.
$byline = sprintf(
/* translators: %s: post author */
__( 'by %s', 'twentyseventeen' ),
'<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . get_the_author() . '</a></span>'
);
// Finally, let's write all of this to the page.
echo '<span class="posted-on">' . twentyseventeen_time_link() . '</span><span class="byline"> ' . $byline . '</span>';
}
endif;
// ======================================
// twentyseventeen_time_link() fonksiyonu
// ======================================
if ( ! function_exists( 'twentyseventeen_time_link' ) ) :
/**
* Yazıların yayın tarihi için güzel bir format hazırlıyoruz.
*/
function twentyseventeen_time_link() {
$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
}
$time_string = sprintf(
$time_string,
get_the_date( DATE_W3C ),
get_the_date(),
get_the_modified_date( DATE_W3C ),
get_the_modified_date()
);
// Hazırladığımız zaman bilgisini, tercümeye hazır bir şekilde, 'Tarih: ' ifadesinden sonra bir link ile birlikte gösteriyoruz.
return sprintf(
/* translators: %s: post date */
__( '<span class="screen-reader-text">Tarih: </span> %s', 'twentyseventeen' ),
'<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>'
);
}
endif;
// ======================================
// twentyseventeen_edit_link() fonksiyonu
// ======================================
if ( ! function_exists( 'twentyseventeen_edit_link' ) ) :
/**
* Yazılar ve sayfalar için bir düzenleme linki sağlar
*
* Bu "Düzenle" linki, düzenleme yetkisine sahip her kullanıcıyı, içerğin düzenleme sayfasına götürür.
* Bu sayde, içeriklerin yazı mı sayfa mı olduğun anlamamızı da sağlar.
*/
function twentyseventeen_edit_link() {
edit_post_link(
sprintf(
/* Tercüme için: %s: Yazının adı */
__( 'Düzenle<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ),
get_the_title()
),
'<span class="edit-link">',
'</span>' );
}
endif;
// ======================================
// twentyseventeen_entry_footer() fonksiyonu
// ======================================
if ( ! function_exists( 'twentyseventeen_entry_footer' ) ) :
/**
* Yazının kategorileri, etiketleri ve yorumları için bir HTML meta gösterir.
*/
function twentyseventeen_entry_footer() {
/* tercüme için: sıralanan öğeler arasına bir ayraç koyar */
$separate_meta = __( ', ', 'twentyseventeen' );
// Yazının kategorilerini getir,
$categories_list = get_the_category_list( $separate_meta );
// Yazının etiketlerini getir.
$tags_list = get_the_tag_list( '', $separate_meta );
// Boş ise göstermeye gerek yok
if ( ( ( twentyseventeen_categorized_blog() && $categories_list ) ||
$tags_list ) || get_edit_post_link() ) {
echo '<footer class="entry-footer">';
if ( 'post' === get_post_type() ) {
if ( ( $categories_list && twentyseventeen_categorized_blog() ) ||
$tags_list ) {
echo '<span class="cat-tags-links">';
// Göstermeden önce, birden fazla kategori olduğundan emin oluyoruz
if ( $categories_list && twentyseventeen_categorized_blog() ) {
echo '<span class="cat-links">' . twentyseventeen_get_svg( array( 'icon' => 'folder-open' ) ) . '<span class="screen-reader-text">' . __( 'Kategoriler', 'twentyseventeen' ) . '</span>' . $categories_list . '</span>';
}
if ( $tags_list && ! is_wp_error( $tags_list ) ) {
echo '<span class="tags-links">' . twentyseventeen_get_svg( array( 'icon' => 'hashtag' ) ) . '<span class="screen-reader-text">' . __( 'Etiketler', 'twentyseventeen' ) . '</span>' . $tags_list . '</span>';
}
echo '</span>';
}
}
twentyseventeen_edit_link();
echo '</footer> <!-- .entry-footer -->';
}
}
endif;
Laf lafı açıyor mu desek, fonksiyon fonksiyonu açıyor mu desek bilemiyorum ama twentyseventeen_entry_footer()
fonksiyonu içinde geçen, ve yine ayını dosyada bulunan, twentyseventeen_categorized_blog()
fonksiyonu da şöyledir:
/**
* Eğer bloğunuzda birden çok kategori varsa true değerini döndürür.
*
* @return bool
*/
function twentyseventeen_categorized_blog() {
$category_count = get_transient( 'twentyseventeen_categories' );
if ( false === $category_count ) {
// Yazıya atanmış bütün kategorileri bir dizi şeklinde getir.
$categories = get_categories(
array(
'fields' => 'ids',
'hide_empty' => 1,
// Sadece birden fazla sayıda mı diye merak ediyoruz
'number' => 2,
)
);
// Getirdiğimiz kategorilerin sayısını söyle
$category_count = count( $categories );
set_transient( 'twentyseventeen_categories', $category_count );
}
// Yazıyı düzenleme durumunda true döndür
if ( is_preview() ) {
return true;
}
return $category_count > 1;
}
Twenty Seventeen temasına ait, index.php
sayfası budur. Karmaşık gibi görünebilir fakat her bir fonksiyona teker teker odaklandığımızda, bütün kodlar daha anlaşılır hale gelecektir.
Bu şablon ile ilgili olarak, aşağıdaki fonksiyondan biraz daha bahsetmek istiyorum:
get_template_part( 'template-parts/post/content', get_post_format() );
Bu fonksiyonun, son parametresi olan get_post_format()
fonksiyonu, ekrandaki yazının formatının isimini getirir. Bu sayede, template-parts/post/
dizini içerisine, oluşturulan content-gallery.php
, content-video.php
… gibi, bir yazı formatı ismiyle biten bütün content-____.php
dosyalarını otomatik olarak algılayacaktır ve bu formattaki yazılar için bu şablon parçalarını kullanacaktır. Eğer, eğer yazı formatlarına özel bir şablon parçası hazırlamazsanız, formatı ne olursa olsun, bütün yazılar için content.php şablon parçasını kullanacaktır.
Şablon dosyasında, get_template_part( 'template-parts/post/content', get_post_format() );
fonksiyonundan sonra ise, sayfalama kodunu görüyorsunuz. Sayfalama kodundan sonra, döngü, bir içerik bulmazsa;
get_template_part( 'template-parts/post/content', 'none' );
fonksiyonu ile template-parts/post/
dizinide bulunan content-none.php
dosyasını çağırıyoruz. İçerik bulunmadığında gösterilen bu şablon parçası da, şu şekilde kodlanmıştır:
<?php
/**
* Herhangi bir yazı bulunmadığında gösterilen şablon parçasıdır.
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/
*
* @package WordPress
* @subpackage Twenty_Seventeen
* @since 1.0
* @version 1.0
*/
?>
<section class="no-results not-found">
<header class="page-header">
<h1 class="page-title"><?php _e( 'İçerik Bulunamadı', 'twentyseventeen' ); ?></h1>
</header>
<div class="page-content">
<?php
if ( is_home() && current_user_can( 'publish_posts' ) ) :
?>
<p><?php printf( __( 'İlk yazını yazmaya hazır mısın? <a href="%1$s">Buradan başlayabilirsin.</a>.', 'twentyseventeen' ), esc_url( admin_url( 'post-new.php' ) ) ); ?></p>
<?php else : ?>
<p><?php _e( 'Aradığınız şeyi bulamadık. Belki bir arama yapmak istersiniz.', 'twentyseventeen' ); ?></p>
<?php
get_search_form();
endif;
?>
</div><!-- .page-content -->
</section><!-- .no-results -->
Daha sonra döngüyü bitirip, HTML etiketlerini kapatıyoruz ve şablon fonksiyonu olan wp_footer()
ile footer.php
şablonunu çağırarak tam bir web sayfası oluşturuyor ve şablonu sonlandırıyoruz. Artık, temamızın emniyet sübabı olan index.php
dosyası hazır ve temamız emin ellerde.
Genellikle, belli içeriklerimiz için, bu içeriklere özel şablonlar hazırlamak isteriz. WordPress, istediğiniz her bir içerik ya da içerik grubu için ayrı bir şablon hazırlamanızı mümkün kılar. Bu şablon dosyalarının içerisinde, özellikle değinilmesi gereken iki tanesi, home.php
ve single.php
dosyalarıdır.
home.php
Temamız, home.php
dosyasını, blog sayfamızın şablonu olarak kullanır, yani, blog yazılarımızı en yeniden eskiye doğru listelediğimiz şablon dosyasıdır. WordPress, home.php
şablonunu, ana sayfa olarak da kullanmamıza izin verir.
Aslında, home.php
dosyası dışında, blog yazılarınızı listelemek için, özel bir sayfa şablonu da hazırlayabilirsiniz, fakat bu tür blog sayfalarında, WordPress’in sayfalama özelliğinden istediğiniz sonucu alamayabilirsiniz. Bu yüzden, blog yazılarınız için, home.php
şablonunu kullanmanız en doğru yoldur.
Temanızda, home.php
dosyası yoksa, WordPress, onun yerine index.php
dosyasını kullanır ve genellikle,home.php
şablonu, index.php
dosyası ile aynıdır. Bu yüzden birçok temada,home.php
şablonu bulunmaz.
Bir home.php
şablonu hazırlamak için, şablon hiyerarşisinde kendisinden bir sonraki şablon dosyası olan index.php
şablonunu kopyalayarak başlamak doğru bir alışkanlıktır.
single.php
Tipi yazı olan içeriklerinizi, birer birer göstermek için kullanılan şablon dosyasıdır, yani tek yazılarınızın şablon dosyasıdır.
Temanızı mümkün olduğunca basit tutmak ve sadece ihtiyacınız olan şablon dosyalarını hazırlamak doğru bir alışkanlıktır. Bu yüzden bir çok tema, WordPress kurulumuyla gelen, standart yazı tipi olan, ‘post‘ tipindeki yazılara özel olarak, single-post.php
şablonu hazırlamak yerine bu yazı tipi için, single.php
şablonunu kullanmak daha çok tercih edilen bir yöntemdir.
Her WordPress temalasının, bir single.php
şablonu içermesi tavsiye edilir. Aşağıda, Twenty Fifteen temasının single.php
dosyasını görüyorsunuz:
<?php
/**
* Tek yazıların ya da ek dosyalarının şablonu
*
* @package WordPress
* @subpackage Twenty_Fifteen
* @since Twenty Fifteen 1.0
*/
get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
// Döngüyü başlat
while ( have_posts() ) : the_post();
/*
* Yazı formatlarına göre ayrı şablonlar oluşturmak istiyorsanız, bunu bir yavru temanın ana dizininde, her format için,
* content-___.php adında şablonlar hazırlayarak yapabilirsiniz. (Dosya adındaki ___ yerine, yazı formatının adı gelmelidir.)
*/
get_template_part( 'content', get_post_format() );
// Eğer yorumlar açıksa veya en az bir yorum yapılmışsa yorum şablonunu çağır
if ( comments_open() || get_comments_number() ) :
comments_template();
endif;
// Önceki/Sonraki sayfalama
the_post_navigation( array(
'next_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Next', 'twentyfifteen' ) . '</span> ' .
'<span class="screen-reader-text">' . __( 'Next post:', 'twentyfifteen' ) . '</span> ' .
'<span class="post-title">%title</span>',
'prev_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Previous', 'twentyfifteen' ) . '</span> ' .
'<span class="screen-reader-text">' . __( 'Previous post:', 'twentyfifteen' ) . '</span> ' .
'<span class="post-title">%title</span>',
) );
// Döngüyü bitir.
endwhile;
?>
</main><!-- .site-main -->
</div><!-- .content-area -->
<?php get_footer(); ?>
singular.php
Bu dosya, WordPress 4.3 versiyonu ile birlikte gelmiştir. Şablon hiyerarşisinde, tek yazıları gösterensingle.php
ve sayfaları gösteren page.php
dosyalarından sonra gelir, yani bu iki dosyanın olmadığı durumlardasingular.php
dosyası kullanılır. Bazı temalarda, bu iki dosyayı ayrı ayrı hazırlamak yerine sadece, singular.php
şablonu hazırlayarak da aynı işi görebiliriz.
singular.php
şablonu, single.php
şablonu ile genellikle aynıdır ve bir temada bu iki şablondan genelde sadece biri bulunur.
archive.php
Yazılarınızı; bir yazar, bir etiket, bir kategori, bir tarih ya da bir sınıflandırma yöntemi gibi meta datalara göre listelemek istediğinizde sahneye archive.php
dosyası çıkar. Bu dosyanın kullanılabilmesi için, temanızda, saydığımız bu meta datalar için hazırlanmış ve şablon hiyerarşisinde, archive.php
dosyasından daha önce gelen bir şablon dosyasının olmaması gerekir. Yine, bir arşiv sayfasına gidebilmek için, yazar, kategori, etiket gibi meta dataların birer link (permalink) olarak düzenlenmesi gerekir ki ziyaretçiniz bu linklere tıklayabilsin ve ilgili arşiv sayfasına gidebilsin. Mesela; bir yazıyı okurken, bu yazının kategorisi için verilen linke tıklarsanız, archive.php
dosyası devreye girecek, bu kategoriye ait bütün yazı arşivini listeleyecektir. Aynen bu örnekte olduğu gibi, tıklanan meta data hangisi olursa olsun, bu dosya o meta dataya ait bütün arşivi listeler.
Bir archive.php
şablonunda, home.php
veya index.php
şablonlarından farklı olarak, genellikle bir sayfa başlığı kullanılır. Bu sayfa başlığında, verilen yazı arşivinin, hangi kategoriye veya sınıfa veya yazara… ait olduğu belirtilir. Mesela; ziyaretçiniz, bir yazar adına tıkladığında, eğer yazarlar için hazırlanmış daha özel bir şablon dosyası yoksa, archive.php
şablonunun kullanıldığı bir arşiv sayfasına gider. Bu sayfanın en üstünde, genellikle, o yazarın adı ve o yazar ile ilgili açıklama bilgisi ile karşılaşır. Sayfanın devamında, o yazarın yayınlamış olduğu bütün yazılar archive.php
şablonuna göre listelenir. Aşağıda, Twnety Fifteen temasına ait, archive.php
şablonunun başlık kısmı verilmiştir.
<header class="page-header">
<?php
// kullanıcı hangi meta datasına tıkladıysa onun adı gelir (Yazarın, etiketin, kategorinin adı, tarih...)
the_archive_title( '
<h1 class="page-title">', '</h1>
' );
// meta bilgisinin varsa açıklaması gelir
the_archive_description( '
<div class="taxonomy-description">', '</div>
' );
?>
</header>
<!-- .page-header -->
author.php
ve date.php
dosyaları, sırasıyla, bir yazara ve bir tarihe ait, yazı arşivini göstermek için kullanılan şablonlardır. Eğer hafızanızı yenilemek ve bu iki dosyanın hiyerarşideki yerini hatırlamak isterseniz, şablon hiyerarşisini dersimizi okuyabilirsiniz. Genellikle, archive.php
şablonu bu iki şablonun görevini yapar, bu yüzden bir çok tema bu iki dosyayı bulundurma gereği duymaz. author.php
ve date.php
şablonları, archive.php
şablonu gibidir.
Eğer temanız, bir çok yazardan oluşan bir internet sitesi için yapılıyorsa, author.php
şablonu sizin için iyi bir tercih olabilir. Bu şablon ile, yazarlara ait; profil resmi (gravatar), sosyal medya hesapları gibi daha detaylı bilgiler sunabilirsiniz ve archive.php
dosyasına mecburiyetiniz kalmaz.
Ayrıca, bir yazarın güzel adını veya ID değerini kullanarak author-barismanco.php
veya author-4.php
gibi, o yazara özgü bir şablon da hazırlayabilirsiniz.
date.php
Bir magazin veya haber sitesi için tema yapıyorsanız, yazılarınızı belli bir tarihe göre arşivlemek için, archive.php
şablonu size yeterli gelmeyebilir. Bu amaç ile date.php
şablonunu kullanabilirsiniz. Daha ileriye giderek, day.php
, month.php
veya year.php
şablonları ile günlük, aylık ve yıllık arşivler bile yapabilirsiniz.
category.php – tag.php – taxonomy.php
Bu üç şablon; kategori, etiketler ve özel sınıflandırmalar için kullanılır. Yazılarınızı, belli bir kategori ya da etiket ya da başka bir sınıflandırma yöntemi ile arşivlemek isterseniz bu şablonlara ihtiyacınız olacaktır. Aslında archive.php
dosyası, yazılarınızı, bahsettiğimiz bütün bu meta datalarına göre (sınıflandırma yöntermlerine göre) arşivler. Sınıflandırma yöntemleriniz için, daha özel şablonlar istiyorsanız, bu üç şablonu hazırlayabilirsiniz. Mesela, kategori arşivinizin, diğer arşivlerinizden farklı görünmesini istiyorsanız, category.php
şablonu bu görevi yerine getirecektir. Hatta link adı, “hayvanlar” olan, kategori arşiviniz için özel bir şablon hazırlamak isterseniz category-hayvanlar.php
şablonu da bu görevi yerine getirecektir.
Belki de, “evcil hayvanlar” etiketi çok önemli gibi göründü ve bu etiketin arşivi için, özel bir şablon hazırlamak istediniz. İşte bu durumda, tag-evcil-hayvanlar.php
şablonu bu görevi yapacaktır.
search.php
Her site sahibi, kullanıcıların aradıklarına kolayca ulaşabilmesi için, mümkün olan bütün kolaylıkları sağlamak ister. Bu yüzden, bir çok tema, bir arama sayfasına sahiptir. Aslında bir arama sayfası şablonu, index.php
şablonuna benzer, temel fark, arama sayfanın, üst kısmında, yapılan arama ile ilgili, bilgi verilmesidir.
Aşağıda, Twnety Fifteen temasının, arama sayfasının, üst kısmı verilmiştir:
<header class="page-header">
<h1 class="page-title"><?php printf( __( 'Şu arama için sonuçlar: %s', 'twentyfifteen' ), get_search_query() ); ?></h1>
</header>
<!-- .page-header -->
Bu kod, aranan kelime ya da kelimeleri;
get_search_query()
fonksiyonu yardımı ile getirir.
Arama sonuçlarında, yazıların tam metnini çağırmak yerine, özetlerini çağırmak ve sonuçları o şekilde listelemek daha çok tercih edilen bir yoldur.
1 yorum: “3.1 Yazılar İçin Şablon Dosyaları”