Belirli bir özel alan olup olmadığını yalnızca bir WordPress gönderisini görüntülemeniz gerektiğini bildiğiniz zaman? 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.

💡 Özetle: Yalnızca belirli bir özel alana sahip WordPress gönderilerini, bu gönderileri filtrelemek için tema dosyalarınızda (index.php gibi) özel bir WP_Query kullanarak gösterebilirsiniz.
📌 Hızlı Not: Bu öğretici, belirli bir özel alana bir değer girilmişse WordPress gönderilerini görüntülemek içindir. Bir WordPress gönderisinin ön yüzünde özel alanları görüntülemek istiyorsanız, WordPress temalarında özel alanlar nasıl görüntülenir hakkındaki 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
Başlamadan önce, tema dosyalarıyla çalışırken aklınızda bulundurmanız gereken birkaç önemli şey vardır.
Kodunuzu doğrudan tema dosyalarınıza eklerseniz, temanızı bir sonraki güncellemede değişiklikleriniz kaybolacaktır.
Bu nedenle, temanızı düzenlemeden güvenli bir şekilde özel PHP kodu eklemek için WPCode gibi bir eklenti kullanmanızı öneririz. Tema dosyalarını düzenlemeyi tercih ederseniz, değişikliklerinizin korunması için bir alt tema kullandığınızdan emin olun.
Bu öğreticiyi düzgün bir şekilde takip edebilmek için aklınızda bulundurmanız gereken bazı şeyler şunlardır:
- Bu öğretici, kodunuzu WordPress sitenize eklemeyi içerir, bu nedenle yeni başlayanlar için en uygun değildir. Buna yeniyseniz, WordPress'te kod kopyalayıp yapıştırma 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.
📍Önemli Not: Bu öğretici yalnızca klasik WordPress temalarıyla çalışır. Blok temaları Site Düzenleyiciyi ve içeriği görüntülemek için farklı bir yaklaşım kullanır, bu nedenle şablon dosyalarını düzenleme yöntemi geçerli olmayacaktır.
Bunu söyledikten sonra, bir WordPress gönderisini yalnızca belirli bir özel alana sahipse nasıl göstereceğimize bakalım.
- Adım 1: Bir Kod Parçacığı Eklentisi Kurun
- Adım 2: Özel Sorgu Kodunu Ekleyin
- Adım 3: Belirli Meta Değerine Göre Filtrele (İsteğe Bağlı)
- Adım 4: Meta Karşılaştırmasına Göre Filtrele (İsteğe Bağlı)
- Adım 5: Gönderileri Birden Fazla Özel Alana Göre Filtrele (meta_query)
- Gerçek Dünya Örneği: Yalnızca 5 Yıldızlı İncelemeleri Göster
- Belirli Bir Özel Alanı Varsa Gönderiyi Görüntüleme Hakkında Sıkça Sorulan Sorular
- Belirli Bir Özel Alanı Varsa Gönderiyi Görüntüleme Hakkında Sıkça Sorulan Sorular
- WordPress Sitenizi Özelleştirmenin Daha Fazla Yolunu Öğrenin
Adım 1: Bir Kod Parçacığı Eklentisi Kurun
Bazı öğreticiler size temanızın index.php dosyasını açmanızı ve WP_Query adlı bir şey kullanarak WordPress döngüsünü tamamen yeniden yazmanızı söyleyecektir. Bunu yapmanızı önermiyoruz.
Ana şablon dosyalarını değiştirmek sitenizin düzenini bozabilir, sitenizi yavaşlatan yinelenen veritabanı sorgularına neden olabilir ve sayfalama ("Sonraki Sayfa" düğmeleri) özelliğini tamamen bozabilir.
Bunun yerine, bunu yapmanın en güvenli ve en verimli yolu pre_get_posts eylem kancası kullanmaktır. Bu, WordPress'e sayfa şablonunu yüklemeden önce gönderileri filtrelemesini söyler.
Bu özel kodu eklemek için WPCode gibi bir eklenti kullanmanızı öneririz. Temanızın dosyalarına doğrudan dokunmadan PHP kodu eklemenize olanak tanır, bu da bir hata yaparsanız sitenizin bozulmayacağı ve temanız güncellendiğinde değişikliklerinizin kaybolmayacağı anlamına gelir.
Adım 2: Özel Sorgu Kodunu Ekleyin
WPCode'u yükleyip etkinleştirdikten sonra, WordPress kontrol panelinizde Kod Parçacıkları » Parçacık Ekle bölümüne gidin ve 'Özel Kodunuzu Ekleyin (Yeni Parçacık)' seçeneğini belirleyin.

“Kod Türü”nün PHP Parçacığı olarak ayarlandığından emin olun.
Ardından, aşağıdaki kodu yapıştırın:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field' );
function wpb_filter_posts_by_custom_field( $query ) {
// Only modify the main query on the front-end homepage
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
// Tell WordPress to only get posts with the custom field key 'color'
$query->set( 'meta_key', 'color' );
}
}
İlk olarak kod, yalnızca web sitenizin ön yüzündeki ana sorguyu (özellikle blog ana sayfasını) değiştirdiğinden emin olmak için kontrol eder ve WordPress yönetici panonuzu tamamen olduğu gibi bırakır.
Ardından, WordPress'e yalnızca ‘color’ özel alanına sahip gönderileri getirmesini söylemek için $query->set kullanılır.
Bu kod sayfayı yüklemeden önce sorguyu değiştirdiği için, temanızın varsayılan sayfalama özelliği ek kod olmadan mükemmel çalışacaktır! WPCode anahtarını Etkin olarak değiştirmek ve ‘Snippet Kaydet’ düğmesine tıklamak, onu canlı hale getirmek için yeterlidir.
Adım 3: Belirli Meta Değerine Göre Filtrele (İsteğe Bağlı)
Peki ya ‘color’ özel alanının ‘blue’ gibi belirli bir değere sahip olduğu gönderileri bulmak isterseniz? Bunu yapmak için kodunuza yalnızca bir meta_value kuralı eklemeniz gerekir.
Güncellenmiş kodunuz şu şekilde görünecektir:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field_value' );
function wpb_filter_posts_by_custom_field_value( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
}
}
Adım 4: Meta Karşılaştırmasına Göre Filtrele (İsteğe Bağlı)
meta_compare parametresi ile filtrelemenizi daha da ileriye taşıyabilirsiniz. Bu, bir değere uymayan gönderileri bulmanızı sağlar.
Örneğin, rengin ‘blue’ olmadığı tüm gönderileri görüntülemek için sorgunuz şu şekilde görünmelidir:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_meta_compare' );
function wpb_filter_posts_by_meta_compare( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
$query->set( '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.
Adım 5: Gönderileri Birden Fazla Özel Alana Göre Filtrele (meta_query)
Birden çok özel alana göre gönderileri filtrelemeniz veya koşulları birleştirmeniz (VE/VEYA gibi) gereken daha karmaşık senaryolar için meta_query dizisini kullanacaksınız.
Bu, farklı bir özel alanı veya değeri hedefleyen bir koşul dizisi tanımlamanıza olanak tanır.
Örneğin, rengi ‘blue’ VE boyutu ‘large’ olan gönderileri görüntülemek için kodunuz şu şekilde görünmelidir:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_multiple_fields' );
function wpb_filter_posts_by_multiple_fields( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$meta_query = array(
'relation' => 'AND', // or 'OR'
array(
'key' => 'color',
'value' => 'blue',
'compare' => '=',
),
array(
'key' => 'size',
'value' => 'large',
'compare' => '=',
),
);
$query->set( 'meta_query', $meta_query );
}
}
Bu sorgu, hem ‘color’ özel alanının ‘blue’ olarak ayarlandığı HEM DE ‘size’ özel alanının ‘large’ olarak ayarlandığı gönderileri getirecektir.
Koşullardan en az birine uyan gönderileri bulmak için 'relation' parametresini ‘OR’ olarak ayarlayabilirsiniz.
Gerçek Dünya Örneği: Yalnızca 5 Yıldızlı İncelemeleri Göster
Diyelim ki bir WordPress kitap inceleme sitesi işletiyorsunuz ve inceleme puanlarını saklamak için star_rating adında özel bir alan kullanıyorsunuz.
Bu sorguyla blog ana sayfanızda yalnızca 5 yıldızlı puana sahip gönderileri kolayca görüntüleyebilirsiniz:
<?php
add_action( 'pre_get_posts', 'wpb_show_only_five_star_reviews' );
function wpb_show_only_five_star_reviews( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'star_rating' );
$query->set( 'meta_value', '5' );
}
}
Bu, ana akışınızın yalnızca en yüksek puanlı içeriğinizi içermesini istiyorsanız son derece kullanışlıdır.
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:
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! Aslında, bu öğreticide özetlediğimiz pre_get_posts yöntemi, temanızın dosyalarını düzenlemenize gerek kalmayacak şekilde özel olarak tasarlanmıştır. WPCode gibi bir kod parçacığı eklentisi kullanarak, temanızın temel kodunun tek bir satırına dokunmadan bu filtreyi sitenize güvenli bir şekilde uygulayabilirsiniz.
Gönderileri birden çok özel alana göre filtreleyebilir miyim?
Evet. pre_get_posts kancası karmaşık argümanları kabul eder. Birden çok özel alanı aynı anda eşleştirmek için bir koşul listesi oluşturmanıza olanak tanıyan bir ‘meta_query’ dizisi kullanırsınız.
Bu yöntem blok temalarıyla çalışıyor mu?
pre_get_posts kancası teknik olarak blok temalarıyla etkileşim kurabilse de, yerel WordPress Query Loop bloğu, kutudan çıktığı haliyle özel alan filtrelemesi için yerleşik bir arayüze sahip değildir. Tam Site Düzenleme blok teması kullanıyorsanız, en kolay yaklaşım, özel PHP yazmak yerine Query Loop bloğuna özel alan filtrelemesi ekleyen bir eklenti kullanmaktır.
'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ın kullanılması, özel alan eklenmiş herhangi bir gönderiyi bulurken, değerin kullanılması yalnızca o belirli bilgi parçasına sahip gönderileri bulacak şekilde filtreler.
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.