Özel gönderi türleri, varsayılan gönderi türüyle en iyi şekilde gösterilmeyen içeriği yayınlamak için harika bir çözümdür. Bunun nedeni, varsayılan gönderi türünün onu diğer sayfalardan ve gönderilerden farklı kılacak bazı özel özelliklerden veya alanlardan yoksun olması olabilir. Özel bir gönderi türünün gerçekten fark yaratabileceği örnekler arasında portföyler, etkinlikler, albümler, mülkler ve çok daha fazlası yer alır. Neyse ki, ister WordPress eklentilerini ister kodunu kullanmayı tercih edin, özel gönderi türleri oluşturmak her zamankinden daha kolay.
Özel gönderi türleri oluşturmanın yanı sıra, bunların arşivlerini de oluşturmayı unutmamalıyız. Özel bir arşiv şablon dosyası olmadan, arşiv sayfalarında görüntülenen içerik, temanızın varsayılan archive.php dosyası tarafından belirlenir. Bu durum özel gönderilerinizin arşivlerinin, her bir özel gönderi öğesi için temel özelliklerin eksik olduğu veya ilgisiz içeriğe sahip gereksiz yere uzun kenar çubuklarıyla blog benzeri görünebileceği anlamına gelir. Bu yüzden özel bir gönderi türü oluşturmak için çaba harcarsanız, eşleşecek bir WordPress özel gönderi türü arşivi oluşturmadan önce tereddüt etmemelisiniz. Bu makaledeki bilgileri kullanarak, herhangi bir özel gönderi türünün arşivini düzenleyebilecek ve planladığınız tasarımı gerçekleştirebileceksiniz.
WordPress özel gönderi türleri arşivi nasıl oluşturulur?
Başlamadan önce, bu makalenin özel bir gönderi arşivi sayfasının kodlamaya genel bakışını temsil ettiğini belirtmemiz gerekir. Bu yüzden orta ve ileri düzey WordPress kullanıcıları için en uygunudur. Bununla birlikte makalenin takip edilmesi kolay olacak şekilde tüm önemli noktaları kapsamlı bir şekilde açıklayacağız. Makalenin ana bölümünü iki bölüme ayırdık, ilk bölüm önceden atılması gereken adımları açıklıyor, ikincisi ise özel bir yazı tipi arşivinin basit bir kodlama örneğini gösteriyor. O halde, hadi dalalım.
Önkoşulları anlamak
Bir WordPress özel yazı tipi arşivi oluşturabilmek için, önceden sıralanmış birkaç şeye sahip olmanız gerekir. Başlamak için, register_post_type() işlevini kullanarak özel gönderi türünüzü kaydetmeniz gerekir. Bunu yaparken, en azından, özel gönderi türünüzün varsayılan bilgisi olarak hizmet eden $post_type argümanını eklemelisiniz. Bu özel gönderi türü için bir arşiv sayfası etkinleştirmek üzere has_archive bağımsız değişkenini de true olarak ayarlamanız gerekir. Ve her şeyin çalışması için, kodu ayrı bir işleve koymalı ve uygun bir kancaya asmalısınız. register_post_type() işlev açıklaması, yazı tipi kaydının init eylem kancasından önce bağlanmaması gerektiğini belirtir.
Tüm bunları göstermek için, bir filmi özel gönderi türü olarak nasıl kaydedebileceğinize dair çok basit bir örneği paylaşıyoruz. Aşağıdaki kodu görebilirsiniz.
function qode_register_custom_post_type() { register_post_type( 'movie', array( 'labels' => array( 'name' => esc_html__( 'Movies', 'your-translate-domain' ), 'singular_name' => esc_html__( 'Movie', 'your-translate-domain' ) ), 'public' => true, 'has_archive' => true, ) ); } add_action( 'init', 'qode_register_custom_post_type' );
İçinde, $post_type öğesini film olarak ayarladık, özel gönderiyi herkes tarafından görüntülenebilir hale getirdik ve arşiv sayfası işlevini etkinleştirdik. Bunu yapmak, arşiv sayfasını kullanmamız için kullanılabilir hale getirdi. Bu sayfanın URL’si olarak web sitenizin-url’si/filmi (burada film, özel gönderi türümüzün slug’udur) olacaktır. Özel bir gönderi türünü farklı bir bilgi notuyla kaydederseniz, URL’niz örneğimizdeki filmin yerine uygun bilgiyi gösterir.
Özel gönderi türünüz için arşiv sayfasını etkinleştirdikten sonra, o sayfada içeriği görüntüleyen özel kodu oluşturmanız gerekir. Bunu düzgün bir şekilde yapmak için, WordPress şablon hiyerarşisi hakkında biraz bilgi sahibi olmanız gerekir. Özel gönderi arşivleri için uygun şablon hiyerarşisi aşağıda azalan sırada verilmiştir.
-
arşiv-{$post_type}.php
-
arşiv.php
-
index.php
Bu durum daha önce etkinleştirdiğiniz özel gönderi arşivi sayfasınınarchive.php dosyasının içeriğini veya eskisi temanızda yoksa index.php dosyasını göstereceği anlamına gelir. Bu sayfaların çıktılarından memnunsanız, özel gönderi arşivinizi kodlamanıza gerek yoktur. Fakat memnun değilseniz, archive-{$post_type}.php adlı bir dosya oluşturmalı ve özel arşiv sonrası sayfasının çıktısını tamamen uyarlamalısınız. Lütfen, dosya adının {$post_type} bölümünün, kaydettiğiniz özel gönderi türünün bilgisiyle değiştirilmesi gerektiğini unutmayın. Yukarıdaki örneğimize göre, doğru dosya adı arşiv-film.php olacaktır.
Daha sonra özel gönderi türünüzün farklı bölümlerini görüntüleyen kodu bu dosyaya eklemelisiniz. Nereden başlayacağınızdan emin değilseniz, mevcut temanızın archive.php dosyasının içeriğini kopyalayabilir ve kodu ihtiyaçlarınıza göre düzenleyebilirsiniz. Alternatif olarak, bu makale için hazırladığımız örnek kodu kullanabilir veya sitenize daha uygun hale getirmek için değiştirebilirsiniz.
Dosyayı oluşturduktan ve içine kodu ekledikten sonra, arşiv sayfanızın düzgün çalışması için dosyayı nereye yükleyeceğinizi bilmek son önemli adımdır. Çoğu durumda, yeni oluşturulan archive-{$post_type}.php dosyası, ister üst ister alt öğe olsun, doğrudan o anda etkin olan temanızın dizinine yüklenmelidir. Bunlar, WordPress’in şablon dosyalarını bulabileceği iki varsayılan konumdur.
Bunlar dışında, dosyayı varsayılan konumdaki bir alt dizine veya oluşturduğunuz siteye özgü bir eklentiye veya alt dizinine eklemek istiyorsanız, ek kodlamaya ihtiyacınız olacaktır. Açık olmak gerekirse, yüklenen şablon dosyasının tam yolunu belirtmek içinarchive_template filtre kancasını kullanmanız gerekecek. Bu belirli filtre kancası, belirli bir tür için şablon dosyasının tam yolunu belirtmenize izin veren {$type}-template adlı daha büyük, dinamik bir filtre kancaları grubunun parçasıdır (ör. arşiv_şablonu, kategori_şablonu, ana_şablon, tekli_şablon, vb.) .).
Her durumda, bir WordPress özel gönderi tipi arşiv şablonu oluşturmak için, sunucuya bir dosya yüklemek için bir FTP istemcisini nasıl kullanacağınızı bilmeniz gerekir. Bu yüzden paslanmış hissediyorsanız FTP bilginizi tazelemelisiniz. Ek olarak bir güvenlik önlemi olarak web sitenizin bir yedeğini almanızı öneririz. Bunu yaptıktan sonra, aşağıda açıklanan şekilde ilerleyin.
Kod kullanarak bir WordPress özel yazı tipi arşivi oluşturma
Bu makale için, özel gönderi türleri hakkındaki eğitimimizde ele aldığımız film özel gönderi türü için arşiv sayfasını görüntüleyen bir örnek hazırladık. Bu makaleyi henüz okumadıysanız, özel gönderi türleri için bir arşiv sayfası oluşturmadan önceki adımların daha ayrıntılı bir dökümü için şimdi ona bakabilirsiniz.
Daha sonra oluşturduğumuz kodlara geçebiliriz. Film arşivi sayfasının (web sitemiz-url/film URL’sine sahip arşiv sayfası) görüntülenmesinden sorumlu olanarchive-movie.php dosyasının içeriğini temsil eder.
<?php get_header(); ?> <main id="main" class="content-wrapper"> <div class="posts-section"> <?php if ( have_posts() ) { ?> <div class="archived-posts"> <?php while ( have_posts() ) { the_post(); ?> <div class="archive-item"> <?php if ( has_post_thumbnail( get_the_ID() ) ) { ?> <div class="top-section"> <div class="movie-thumbnail"> <a href="https://qodeinteractive.com/magazine/create-wordpress-custom-post-type-archive/<?php the_permalink(); ?>"> <?php the_post_thumbnail( 'large' ); ?> </a> </div> </div> <?php } ?> <div class="bottom-section"> <div class="movie-title"> <a href="https://qodeinteractive.com/magazine/create-wordpress-custom-post-type-archive/<?php the_permalink(); ?>"> <h3><?php the_title(); ?></h3> </a> </div> <?php $excerpt = get_the_excerpt(); $excerpt = _substr( $excerpt, 0, 100 ); $short_excerpt = _substr( $excerpt, 0, strrpos( $excerpt, ' ' ) ); if ( ! empty( $short_excerpt ) ) { ?> <div class="movie-excerpt"> <p itemprop="description" class="-e-excerpt"> <?php echo esc_html( $short_excerpt ); ?>…</p> </div> <?php } ?> </div> </div> <?php } ?> </div> <?php wp_reset_postdata(); } else { ?> <div class="archived-posts"><?php echo esc_html__( 'No posts matching the query were found.', 'your-translate-domain' ); ?></div> <?php } ?> </div> </main> <?php 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.
Şimdi bu kodun yapısını inceleyelim.
Başlamak için, onu daha basitleştirilmiş bir biçimde inceleyeceğiz. Aşağıda görebileceğiniz gibi, ilgili altbilgi ve üstbilgi şablonlarını çağıran get_header() ve get_footer() işlevlerini kullanarak üstbilgi ve altbilgiyi görüntüledik. Daha sonra sayfanın ana bölümünde basit bir WordPress Döngüsü görüntülenir. Son olarak gösterilebilecek film yoksa (örneğin, yayınlanmamışsa), sorguyla eşleşen film bulunamadı şeklinde bir mesaj görüntülenir. görünecek.
<?php get_header(); ?> <main id="main" class="content-wrapper"> <div class="posts-section"> <?php if ( have_posts() ) { ?> <div class="archived-posts"> <?php while ( have_posts() ) { the_post(); ?> <!-- Some code here--> <?php } ?> </div> <?php wp_reset_postdata(); } else { ?> <div class="archived-posts"><?php echo esc_html__( 'No movies matching the query were found.', 'your-translate-domain' ); ?></div> <?php } ?> </div> </main> <?php get_footer(); ?>
Kodun ana kısmı ise yayınlanan her film öğesi için uygun film bilgilerini görüntüler. Daha doğrusu, aşağıda gösterilen kodu kullanarak, filmin öne çıkan görselini, başlığını ve kısaltılmış bir alıntıyı gösterdik. Ayrıca hem film başlığı hem de öne çıkan görsel, filmin sayfasına bağlıdır. Öne çıkan resim, varsayılan olarak WordPress’te kayıtlı olan resim boyutlarından biri olan ‘büyük’ boyutunda görüntülenir. Son olarak alıntı 100 karakter sınırından önceki son tam kelimeye kadar gösterilir ve üç nokta simgesi(…) ile biter. Söylemeye gerek yok, bu üç öğe yalnızca siz onları eklediyseniz gösterilecektir. Bunu, her film öğesi için WordPress arayüzünü kullanarak yaparsınız.
<div class="archive-item"> <?php if ( has_post_thumbnail( get_the_ID() ) ) { ?> <div class="top-section"> <div class="movie-thumbnail"> <a href="https://qodeinteractive.com/magazine/create-wordpress-custom-post-type-archive/<?php the_permalink(); ?>"> <?php the_post_thumbnail( 'large' ); ?> </a> </div> </div> <?php } ?> <div class="bottom-section"> <div class="movie-title"> <a href="https://qodeinteractive.com/magazine/create-wordpress-custom-post-type-archive/<?php the_permalink(); ?>"> <h3><?php the_title(); ?></h3> </a> </div> <?php $excerpt = get_the_excerpt(); $excerpt = _substr( $excerpt, 0, 100 ); $short_excerpt = _substr( $excerpt, 0, strrpos( $excerpt, ' ' ) ); if ( ! empty( $short_excerpt ) ) { ?> <div class="movie-excerpt"> <p itemprop="description" class="-e-excerpt"> <?php echo esc_html( $short_excerpt ); ?>…</p> </div> <?php } ?> </div> </div>
Bu kod basit ama yararlı bir örneği temsil eder. Doğrudan kullanabilir veya gerekirse geliştirebilirsiniz. Uygun bir kod oluşturduktan sonra, kodu içerenarchive-{$post_type}.php dosyası (bizim durumumuzdaarchive-movie.php dosyası) FTP yoluyla sunucuya yüklenmelidir. İster yükle…