Online Kimya Özel Dersi Al

ÜCRET

KONU

TARİH

3.1 Yazılar İçin Şablon Dosyaları

wordpress tema yapımı

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

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.

author.php

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.


DERSİN SONU

Kimya Özel Dersi Al

Yorum yaparak bize destek olabilirsiniz.

1 yorum: “3.1 Yazılar İçin Şablon Dosyaları”

Bir cevap yazın

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

Şu kadar HTML serbest:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>