Bir temanın şablon dosyaları, WordPress web sitenizin bel kemiğidir; web sitesinde çeşitli dinamik içerik türlerini görüntülemeye yararlar. Çoğu WordPress kullanıcısı, içeriklerini düzenlemek için yalnızca bu şablonlara ve sayfa oluşturuculara güvenirken, web sitesi içeriğinizi özelleştirmenin başka bir yolu vardır. Ve kod kullanarak özel şablon dosyaları yazmayı içerir. Bu makalede, özel olarak nasıl özel gönderi şablonları oluşturabileceğinizi tartışacağız ve bunu yapmanın olası faydalarını ele alacağız. Ve size bu konuyu birkaç küçük adıma bölerek nasıl ele alacağınızı göstereceğiz:
-
WordPress’te neden özel tek gönderi şablonları oluşturmak istersiniz?
-
Şablon dosyası hiyerarşisini anlama
-
Özel tek gönderi şablonları oluşturma
WordPress’te neden özel tek gönderi şablonları oluşturmak istersiniz?
Özel gönderi şablonları en iyi şekilde, web sitenizin geri kalanından sıyrılmak ve izleyicileri şaşırtmak amacıyla belirli gönderilere uygulanır. Size, çok çeşitli web siteleri ve durumlar için faydalı olabilecek benzersiz, tamamen özel düzenler oluşturma yeteneği sunarlar.
Örneğin trend olan bir kategoriye ait gönderiler veya belirli konuk yazarlar veya katkıda bulunanlar tarafından yapılan gönderiler için özel gönderi şablonları kullanabilirsiniz. Ayrıca web sitenizdeki her yazar için özel gönderi şablonları oluşturarak içeriklerini görsel olarak tanınabilir hale getirebilirsiniz. Özellikle herhangi bir özel gönderi türü eklediyseniz, belirli gönderi türleri için şablonlar bile oluşturabilirsiniz. Bunlar, WordPress tek gönderi şablonları oluşturarak sunulan olasılıklar hakkında bir fikir vermek için yalnızca birkaç örnektir.
Basitçe söylemek gerekirse, özel gönderi şablonları, temanız veya sayfa oluşturucu eklentilerinin kullanımı yoluyla başka türlü kullanılamayan bir düzen oluşturmanıza olanak tanır. Bunları nasıl kodlayacağınızı bilerek, web sitenizin içeriğini özelleştirmek için daha fazla esneklik kazanacaksınız.
WordPress’te özel tek gönderi şablonları nasıl oluşturulur?
Artık özel gönderi şablonları oluşturmanın sağladığı avantajlara dair daha net bir resme sahip olduğunuza göre, bunu nasıl yapabileceğinize bir göz atalım. Makalenin bu bölümünü iki bölüme ayırdık. Biri kodlamaya başlamadan önce bilmeniz gereken gereksinimleri kapsar, diğeri ise oluşturduğumuz bir örneği kullanarak özel bir şablonun nasıl görünebileceğini gösterir.
Şablon dosyası hiyerarşisini anlama
Başta da belirttiğimiz gibi, şablon dosyaları web sitenizde çeşitli dinamik içerik parçalarını görüntülemekle görevlidir. Düzgün çalışabilmeleri için katı bir Şablon Hiyerarşisi yapısına uyulmalıdır. WordPress, temanız tarafından sağlanan şablon dosyalarından herhangi birini kullanmadan önce bir sayfanın veya gönderinin kendisine atanmış özel bir şablonu olup olmadığını otomatik olarak kontrol eder.
Geçmişte, bu yalnızca sayfalar (yani sayfa şablonları) için geçerliydi, fakat işlevsellik, WordPress 4.7 güncellemesinden başlayarak gönderileri ve özel gönderi türlerini kapsayacak şekilde genişletildi. Bu yüzden gönderiler ve özel gönderi türleri için mevcut hiyerarşi aşağıdaki gibidir:
-
özel sayfa/yazı şablonu dosyası
-
single-{post-type}-{post-slug}.php
-
single-{post-type}.php
-
tek.php
-
singular.php
-
index.php
Bunun ne anlama geldiğini açıklığa kavuşturalım.
İlk olarak, {post-type} notasyonu, belirli bir gönderi türünün bilgisini temsil ederken, {post-slug}, belirli bir gönderi öğesinin bilgisini temsil eder. {post-type} gösterimini içeren adlara sahip dosyalar, yalnızca register_post_type() işlevi kullanılarak kaydedilen özel gönderi türleri için geçerli olacaktır. Örneğin bilgi notu olarak portföy-öğesiyle özel bir gönderi türü kaydettiyseniz, bu hiyerarşi içindeki bir dosya tek-portföy-öğesi.php olarak adlandırılır.
İkinci olarak, yukarıda gösterilen kesin adlandırma kurallarına uyması gerekmeyen tek dosya özel şablon dosyasıdır. Özel şablon dosyalarının sayfalar, gönderiler ve özel gönderi türleri için tek tip bir şekilde yazılabileceğini vurgulamak için ismin bir parçası olarak sayfa/yazıyı kasıtlı olarak koyduk. Bu aynı zamanda daha önce bahsettiğimiz WordPress 4.7 güncellemesinin bir parçasıydı.
Bu kullanım esnekliğinin nedeni, her özel şablon dosyasının ilk ve zorunlu bölümü olan şablon başlığında yatmaktadır. Şablonu kaydetmeye ve şablon hakkında bazı ek bilgiler vermeye yarar. Şablon başlığı, aslında, hangi yazı türü veya türleri için yazıldığını belirten şablon adını belirten basit bir yorumdur.
Şablon başlığı katı bir yapıya sahiptir; İlgili bilgi parçaları, Template Name: ve Template Post Type: dizelerinden sonra belirtilir. Başka bilgi gerekli değildir, fakat bazılarını eklemeyi seçerseniz, dosyayı inceleyen herkes için yararlı olabilir. Ayrıca şablon dosyası .php uzantısına sahip olduğu için PHP açılış etiketiyle başlamalıdır: ) koda daha sonra yerleştirilebilir.
Bunu açıkladıktan sonra, aşağıda özel bir şablon dosyasının nasıl başlayabileceğine dair bir örnek görebilirsiniz.
<?php /** * Template Name: No Sidebar Template * Template Post Type: post, page */
Bu şablon başlığını kullanarak, Kenar Çubuğu Yok Şablonu adlı özel bir şablonu kaydedebilir ve onu hem gönderiler hem de sayfalar için kullanılabilir hale getirebilirsiniz. Bu durum Kenar Çubuğu Şablonu Yok’un hem tek bir sayfada Sayfa Özelliklerinde hem de tek bir gönderide Gönderi Özelliklerinde bir seçenek olarak görüneceği anlamına gelir.
Bu makalede WordPress tek gönderi şablonlarına odaklandığımız için, örneğimizdeki şablon gönderi türünü gönderi olarak ayarlayacağız. Bunun dışında, şablon başlıklarıyla ilgili son tavsiyemiz, daha sonra olası bir karışıklığı önlemenize yardımcı olacağı için açıklayıcı adlar kullanmak olacaktır.
Bununla birlikte makale için yaptığımız örneğe geçmeden önce bahsetmemiz gereken birkaç şey daha var.
İlk olarak, kod açısından, özel bir şablon dosyasına eklenebilecek pek çok şey vardır. Bunların tümü, içeriği oluşturan bir şablon dosyasının ikinci bölümüne eklenir. Kenar çubuklarını, widget’ları, düzenleyici aracılığıyla eklenen içeriği, özel yazı tipi meta bilgilerini vb. görüntüleyen kodları içerir.
Uygun programlama becerilerine sahipseniz, özel şablon dosyalarını kullanarak elde edebileceğiniz birçok farklı düzen vardır. Ve yapmasanız bile sıfırdan başlamanız için bir neden yoktur; özel şablon dosyaları genellikle temanızdan uygun bir şablon dosyası alınarak ve tercihinize göre değiştirilerek yapılır.
Tam şablon dosyasını oluşturduktan sonra, onu bir .php dosyası olarak kaydetmeli ve sunucunuza yüklemelisiniz. FTP kullanarak, dosyayı özel şablon dosyaları için uygun dört yerden birine yerleştirmelisiniz. Bunlar, etkin ana tema dizini, etkin alt tema dizini veya bu iki konumdan herhangi birindeki bir alt dizindir.
Ayrıca dosyayı adlandırırken dikkatli olmalısınız. Önceden ayrılmış adları (örn. dizin, arşiv, tek,…) veya önceden ayrılmış bir önek içeren adları (örn. tek-, arşiv-, sayfa-,…) kullanmaktan kaçının. Basitlik adına, dosyayı şablonla aynı şekilde adlandırmak isteyebilirsiniz, böylece dosyayı kolayca takip edebilirsiniz.
Özel tek gönderi şablonları oluşturma
Aşağıdaki bölümde, özel kod kullanarak özel gönderi düzenlerinin nasıl oluşturulacağını tartışacağız. Bu süreç, WordPress’e önemli bir aşinalık ve önceki kodlama deneyimini gerektirdiğinden, orta ve ileri düzey WordPress kullanıcılarına daha yatkındır. Konuyu açıklığa kavuşturmak için ayrıntılı açıklamalar ve faydalı bağlantılar sağladık, fakat devam etmeden önce gerekirse daha fazla araştırma yapmanızı öneririz.
Bir WordPress tek gönderi şablonu oluşturma işlemi, kodu oluşturduktan sonra .php dosyasını sunucuya yüklemek için ihtiyaç duyacağınız için FTP’nin nasıl kullanılacağını da anlamayı gerektirir. Ayrıca daha ileri gitmeden önce, her ihtimale karşı web sitenizin bir yedeğini almanızı tavsiye ederiz.
Bu yöntemin gereksinimleri yüksek gibi görünse de olumlu tarafı önemlidir; ihtiyaçlarınıza tam olarak uyan özel bir gönderi düzeni oluşturabileceksiniz. Bu WordPress tek gönderi şablonları yapma sürecinde size yardımcı olmak için bu makale için bir kod örneği hazırladık. Olduğu gibi kullanabilir veya uygun gördüğünüz şekilde değiştirebilirsiniz.
Bununla birlikte kodun kendisine bir göz atalım.
<?php /* * Template Name: No Sidebar Post Template * Template Post Type: post */ get_header(); ?> <main id="main-content" class="custom-grid"> <div class="custom-grid-inner"> <?php if ( have_posts() ) { while ( have_posts() ) { the_post(); $author_id = get_the_author_meta( 'ID' ); $author_url = get_author_posts_url( $author_id ); ?> <article <?php post_class( 'custom-blog-item' ); ?>> <div class="blog-item-inner"> <h1 itemprop="name" class="bi-title entry-title"> <?php the_title(); ?> </h1> <div class="content-above-image"> <div class="bi-author"> <div class="bi-author-avatar"> <a itemprop="url" href="https://qodeinteractive.com/magazine/create-wordpress-single-post-templates/<?php echo esc_url( $author_url ); ?>"> <?php echo get_avatar( $author_id, 60 ); ?> </a> </div> <div class="bi-author-name"> <a itemprop="author" class="bi-author-link" href="https://qodeinteractive.com/magazine/create-wordpress-single-post-templates/<?php echo esc_url( $author_url ); ?>"> <?php the_author_meta( 'display_name' ); ?> </a> </div> </div> <div class="bi-category"> <?php the_category( ' / ' ); ?> </div> </div> <div class="image-wrapper"> <?php if ( has_post_thumbnail() ) { ?> <div class="bi-media-image"> <?php the_post_thumbnail( 'full' ); ?> </div> <?php } ?> <div class="bi-date"> <div itemprop="dateCreated" class="entry-date updated"> <?php the_time( get_option( 'date_format' ) ); ?> </div> </div> </div> <div class="content-below-image"> <?php if ( get_the_tags() ) { ?> <div class="bi-tags"> <h5 class="bi-tags-label"><?php esc_html_e( 'Tags: ', 'domain_name' ); ?></h5> <div class="bi-tags-wrapper"> <?php the_tags( '', ', ', '' ); ?> </div> </div> <?php } ?> <div class="article-text"> <?php // Include post content the_content(); ?> </div> <?php // Previous/next post navigation. the_post_navigation( array( 'next_text' => '<span class="nav-label">' . esc_html__( 'Next article', 'domain_name' ) . '</span><p class="next-post-title">%title</p>', 'prev_text' => '<span class="nav-label">' . esc_html__( 'Previous article', 'domain_name' ) . '</span><p class="previous-post-title">%title</p>' ) ); // Include comments if ( comments_open() ) { ?> <div class="comment-section"> <?php comments_template(); ?> </div> <?php } ?> </div> </div> </article> <?php } // End of the loop. } wp_reset_postdata(); ?> </div> </main> <?php get_footer();
Bu kodun anlaşılmasını kolaylaştırmak için ana bileşenlerini açıklayacağız.
Bunu önce kodun daha basitleştirilmiş bir versiyonuna bakarak yapacağız. Aşağıdaki şablon başlığından da görebileceğiniz gibi, kod, Kenar Çubuğu Olmayan Gönderi Şablonu adlı blog gönderisine özel bir şablonu temsil eder.
Bunun dışında kod, bir WordPress Döngüsünü saran küçük bir HTML işaretlemesi parçası içerir. Belirli bir gönderide neyin gösterildiğini belirten kodun ana kısmı, onun içinde bulunur.
Ayrıca kod, sitenin o anda etkin olan temasının üstbilgi ve altbilgi şablonlarını yükleyen get_header() ve get_footer() işlevlerinin kullanımını içerir. Bunların yanı sıra, global $post değişkenini ana sorgudaki geçerli gönderiye sıfırlamak için wp_reset_postdata() işlevini de kullandık.
<?php /* * Template Name: No Sidebar Post Template * Template Post Type: post */ get_header(); ?> <main id="main-content" class="custom-grid"> <div class="custom-grid-inner"> <?php if ( have_posts() ) { while ( have_posts() ) { the_post(); // Post content code goes here } // End of the loop. } wp_reset_postdata(); ?> </div> </main> <?php get_footer();
Şimdi kodun ana kısmına odaklanalım.
İlk olarak, iki değişken tanımladık: $author_id ve $author_url. Yazı yazarının avatarını görüntülemek ve onu uygun yazı yazarı arşiv sayfasına bağlamak için kullanılırlar. Değişken adlarının da belirttiği gibi, gönderi yazarının…