Özel alanlara göre belirli WordPress gönderilerini göstermeniz gerektiğinde ne olacağını biliyorsunuz? Biz de oradaydık.
WordPress ile ilk başladığımızda, özellikle belirli bilgileri içeren gönderileri görüntülemek istediğimizde, herhangi bir kod parçacığı görmek göz korkutucu geliyordu.
Ancak iyi haber şu: binlerce WordPress kullanıcısına yardımcı olduktan sonra, özel alan filtreleme gibi teknik görünen bir şeyin bile korkutucu olmak zorunda olmadığını gördük.
Aslında, bunu yapmak için basit bir kod yöntemiyle size yol göstereceğiz.
Bu çözüm, ister belirli kriterlere dayalı olarak normal blog gönderileri ister özel gönderi türleri yayınlıyor olun, mükemmel çalışır.

📌 Hızlı Not: Bu eğitim, belirli bir özel alana bir değer girilmişse WordPress gönderilerini görüntülemek içindir.
WordPress gönderisinin ön yüzünde özel alanları görüntülemek istiyorsanız, WordPress temalarında özel alanların nasıl görüntüleneceği konusundaki kılavuzumuzu okuyabilirsiniz.
Neden Belirli Bir Özel Alana Sahip WordPress Gönderilerini Görüntülemelisiniz?
Bir WordPress web sitesinde gönderi oluşturduğunuzda, gönderiye ek meta veriler eklemek için özel alanları kullanabilirsiniz.
Meta veriler, bir gönderiye ekleyebileceğiniz ekstra bilgilerdir. Örneğin, bir kitap incelemesi yazıyorsanız, ‘Yazarın Adı’ veya ‘Yıldız Derecelendirmesi’ için özel alanlar ekleyebilirsiniz.
Özel alanlar gelişmiş bir WordPress kavramıdır ve WordPress'e özel alan eklemenin birçok yolu vardır. Gönderimizde özel alanları kullanma ve görüntüleme konusunda birçok faydalı ipucu bulacaksınız: WordPress Özel Alanları 101: İpuçları, Püf Noktaları ve Hileler.

Kullanıcılarımızdan biri bize belirli bir özel alan varsa WordPress gönderilerini nasıl görüntüleyeceğini sordu. Bu, belirli bir özel alan ve/veya değer içeren tüm gönderileri listeleyen özel bir sayfa oluşturmak istiyorsanız faydalı olabilir.
Cevapla yanıtladıktan sonra, bunu herkesle paylaşmanın en iyisi olacağını düşündük, böylece daha büyük WordPress.org topluluğu da bundan faydalanabilir.
WordPress Tema Dosyalarınızı Düzenleme: Dikkat Edilmesi Gerekenler
Bu öğreticiyi düzgün bir şekilde takip edebilmek için aklınızda bulundurmanız gereken bazı şeyler şunlardır:
- Bu öğretici, WordPress tema dosyalarınızı kodla düzenlemeyi içerir, bu nedenle yeni başlayanlar için en uygunu değildir. Yeniyseniz, WordPress'e kod nasıl kopyalanıp yapıştırılır konusundaki kılavuzumuzu okumanız gerekecektir.
- Bir hata oluştuğunda canlı sitenizin etkilenmemesi için web sitenizi yedeklemenizi ve/veya bir hazırlık ortamı kullanmanızı öneririz. Bunun nedeni, tema dosyalarınıza kod ekleyecek olmanızdır ki bu riskli olabilir.
- WordPress şablon hiyerarşisinin nasıl çalıştığını anlamanızı öneririz, böylece kodu nereye ekleyeceğinizi bilirsiniz.
- Ayrıca WordPress döngülerinin nasıl çalıştığına da aşina olmanız gerekecek çünkü bu parametreleri bir WordPress sorgusunda çağıracağız.
Ayrıca, bu öğreticinin yalnızca klasik WordPress temalarıyla çalıştığını unutmayın, çünkü blok temalarının farklı bir tema dosyası kümesi vardır.
Bunu söyledikten sonra, bir WordPress gönderisini yalnızca belirli bir özel alana sahipse nasıl göstereceğimize bakalım.
Gönderilerinizi Belirli Özel Alanlara Göre Nasıl Filtrelersiniz
Kullanmanız gereken kodu göstermeden önce, onu hangi tema dosyasına eklemeniz gerektiğini bilmeniz gerekir. Büyük olasılıkla bu, index.php, archive.php veya page.php gibi bir sayfa şablonu olacaktır.
Diyelim ki bunu Yirmi Yirmi Bir temasının index.php dosyasına eklemek istiyorsunuz. Şu anda o dosyanın WordPress döngüsü bölümü şöyle görünüyor:
<?php
if ( have_posts() ) {
// Load posts loop.
while ( have_posts() ) {
the_post();
get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
}
// Previous/next page navigation.
twenty_twenty_one_the_posts_navigation();
} else {
// If no content, include the "No posts found" template.
get_template_part( 'template-parts/content/content-none' );
}
get_footer();
Bu kod, gönderileri görüntülemek için varsayılan WordPress döngüsünü (have_posts() ve the_post()) kullanır. Bu yöntem çoğu standart WordPress teması için uygundur ve özel filtreleme veya sıralama olmadan gönderileri görüntülemek için kullanılır.
Şimdi, yukarıdaki örnekte olduğu gibi ‘color’ özel alanını kullandığınızı varsayalım. Bu kodun tamamını aşağıdaki kod parçacığı ile değiştirmeniz gerekecek:
<?php
// The Query to show a specific Custom Field
$the_query = new WP_Query('meta_key=color');
// Load posts loop.
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
}
// Previous/next page navigation.
twenty_twenty_one_the_posts_navigation();
} else {
// If no content, include the "No posts found" template.
get_template_part( 'template-parts/content/content-none' );
}
// Reset Post Data
wp_reset_postdata();
get_footer();
Bu yeni kodda, belirli bir özel alana sahip gönderileri almak için özel bir sorgu tanıttık (bu durumda, 'color' özel alanına sahip herhangi bir gönderi).
Ardından, bu özel sorgu tarafından getirilen gönderiler üzerinde yineleme yapmak için özel bir döngü (if ($the_query->have_posts())) kullanır ve her gönderinin içeriğini ilk kod parçacığıyla aynı şekilde görüntüler.
WordPress'in özel sorgudan sonra tüm gönderileri doğru şekilde görüntülemeye dönmesini sağlamak içinwp_reset_postdata() fonksiyonunu da ekledik. Bu, sitenin sorunsuz çalışmasını ve kullanıcılara doğru içeriği göstermesini sağlar.
Şimdi, 'color' özel alanının 'blue' gibi belirli bir değere sahip olduğu gönderileri bulmak ister misiniz? Bunu yapmak için sorgunuza bir 'meta_value' parametresi eklemeniz yeterlidir.
Güncellenmiş sorgu kodunuz şu şekilde görünecektir:
$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );
💡Profesyonel İpucu: meta_compare parametresiyle filtrelemenizi daha da ileri götürebilirsiniz. Bu, bir değere uymayan gönderileri bulmanızı sağlar.
Örneğin, rengi 'mavi' olmayan tüm gönderileri görüntülemek için sorgunuz şu şekilde olacaktır:
$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue', 'meta_compare' => '!=' ) );
!=, WordPress'e 'color' alanının mevcut olduğu ancak 'blue'ye eşit olmadığı tüm gönderileri bulmasını söyler.
Kullanabileceğiniz birçok başka karşılaştırma operatörü vardır; bunları resmi WordPress geliştirici belgelerinde bulabilirsiniz.
PHP sayfa şablon dosyasında kodu kaydettikten sonra, kodunuzun çalışırken etkisini görmek için WordPress sitenizi ön uçta kontrol edebilirsiniz.
Belirli Bir Özel Alanı Varsa Gönderiyi Görüntüleme Hakkında Sıkça Sorulan Sorular
Belirli bir özel alana sahipse bir gönderinin görüntülenmesi hakkında okuyucularımızın sıkça sorduğu bazı sorular şunlardır:
Tema dosyalarını düzenlemeden bunu yapmanın bir yolu var mı?
Evet ve çoğu kullanıcı için önerdiğimiz yöntem budur. WPCode gibi bir eklenti, tema dosyalarına doğrudan dokunmadan bu tür özel PHP kod parçacıklarını güvenli bir şekilde eklemenize olanak tanır.
Bu, sitenizi hatalardan korur ve temanızı güncellediğinizde özelleştirmelerinizin kaybolmamasını sağlar.
Gönderileri birden çok özel alana göre filtreleyebilir miyim?
Yapabilirsiniz. WP_Query fonksiyonu çok güçlüdür ve daha karmaşık argümanlar kabul eder. Birden çok özel alanı aynı anda eşleştirmek için bir koşul dizisi oluşturmanıza olanak tanıyan bir ‘meta_query’ parametresi kullanırsınız.
Bu yöntem blok temalarıyla çalışıyor mu?
Bu özel öğretici, index.php veya archive.php gibi dosyaları düzenleyerek klasik temalara odaklanmaktadır. Blok temaları Site Düzenleyici'yi kullanır ve bu dosyalara güvenmez.
Bir blok temasında benzer bir sonuç elde etmek için, özel kod gerektirmeyen yerleşik filtreleme seçeneklerine sahip Sorgu Döngüsü bloğunu kullanırsınız.
'meta_key' ve 'meta_value' arasındaki fark nedir?
'meta_key'i 'Renk' veya 'Durum' gibi etiket adı olarak düşünün. 'meta_value' ise 'Mavi' veya 'Yayınlandı' gibi o alana girilen gerçek veridir.
Anahtar kelimeyi kullanmak, o özel alana sahip herhangi bir gönderiyi bulur; değeri kullanmak ise o belirli bilgiye sahip herhangi bir gönderiyi bulur.
WordPress Sitenizi Özelleştirmenin Daha Fazla Yolunu Öğrenin
WordPress sayfalarınızı özelleştirebileceğiniz daha fazla yol burada:
- WordPress'te Bireysel Kategorileri Farklı Şekilde Nasıl Stilize Edebilirsiniz
- WordPress'te Özel Kaydırma Çubuğu Nasıl Eklenir
- WordPress Widget'larına Özel Stiller Nasıl Eklenir
- Her WordPress Yazısını Farklı Şekilde Biçimlendirme
- WordPress Temalarınızda Kısa Kodlar Nasıl Kullanılır
- WordPress'te Geri Dönen Ziyaretçiler İçin Yeni Gönderileri Nasıl Öne Çıkarırsınız
- WordPress'te Kenar Çubuğu Tarafını Değiştirme
Umarız bu öğretici, belirli bir özel alana sahipse bir WordPress gönderisinin nasıl görüntüleneceğini öğrenmenize yardımcı olmuştur. Ayrıca, bir WordPress web sitesinin nasıl düzenleneceği hakkındaki tam kılavuzumuzu ve WordPress için en iyi Figma eklentileri hakkındaki uzman seçimlerimizi de görmek isteyebilirsiniz.
Bu makaleyi beğendiyseniz, lütfen WordPress video eğitimleri için YouTube Kanalımıza abone olun. Bizi ayrıca Twitter ve Facebook'ta da bulabilirsiniz.
ahmed
Bir sorum var efendim, tek bir gönderiyi ve özel alanları görüntülemek istersem ne yapmalıyım.
Belirli özel alanlara sahip gönderiyi görüntülemek istemiyorum. Gönderinin tüm özel alanlarını görüntülemek istiyorum.
Dave101
Merhaba, faydalı eğitim için teşekkürler. Bir sorum var, bir wordpress web sitesinde "meta_country" adında bir meta değeri ayarladım ve ardından her gönderiyi makalenin ülkesiyle, örneğin "us", "uk", "fr" gibi ayarladım. Şimdi blogun ana sayfasına belirli bir ülkeye ve belirli bir etikete sahip tüm gönderilerin listesini gösteren bir bağlantı eklemeye çalışıyorum. Örneğin, "APPLE" etiketli tüm "UK" gönderileri.
Bunu nasıl yapacağımı anlamadım, bana yardım edebilecek biri var mı?
Maksim Kaminiskiy
harika teşekkürler, çok iyi yardımcı oldu!
pjhooker
Teşekkürler!
Eduard Unruh
Aman Tanrım sonunda TEŞEKKÜRLER!
Mario M
Sorguya “post_type” parametresini dahil etmediğim sürece hiçbir sonuç üretemedim.
örn: $the_query = new WP_Query(‘post_type=page&meta_key=color’);
sacha
Harika, çok basit ve temiz.
Teşekkür ederim.
scottlee.me
@ad Harika soru! Ben de merak ediyorum.
ad
Merhaba,
Belirli bir Özel Alanı OLMAYAN gönderileri nasıl gösterebilirim? Fikri olan var mı?
Teşekkürler!!!
tara tin
php'den bildiğim kadarıyla meta_key!=’anahtarınız’ olmalı
; bilmeniz gereken tek şey “!” “değil” anlamına gelir
brunobruno2
Harika! Paylaştığınız için çok teşekkürler. Tıpkı sihirli gibi çalışıyor.