lostyazilim
tr.link

Wordpress Özel Alanlarda (Custom Fields) arama sorunu

2 Mesajlar 437 Okunma
acebozum
tr.link

kirgizmustafa17 kirgizmustafa17 WM Aracı Kullanıcı
  • Üyelik 11.07.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum Konya
  • Ad Soyad M** K**
  • Mesajlar 8
  • Beğeniler 0 / 0
  • Ticaret 0, (%0)
Bir film sitesi üzerinde çalışıyorum ve sitemde bir çok bölümü özel alanlar ile düzenliyorum. Örneğin, imdb adresi, orijinal adı, yayın tarihi vs. Fakat arama yaparken sadece metin kısmında ve sayfa başlığına göre arama yapıyor.

Film Adı: Kaptan Marvel
Orj. Adı: Captain Marvel
IMDB ID: tt4154664
Özet (metin): Carol Danvers becomes one of ....

tüm alanları dolduruyorum ve alanlar temada düzgün bir şekilde görünüyor fakat arama yaparken sadece "Kaptan Marvel" ve içerik kısmında görünen özet bilgisi (Carol Danvers becomes one of ....) kelimeleri ile sonuçlar gösteriyor.

Yani Captain ya da tt4154664 yazınca sonuç bulunamadı diyor.

Bunun için ne yapabilirim? bu kısımları başlığa ya da içerik kısmına eklemek istemiyorum ama yapabilecek bir şey yoksa mecbur o şekilde yapacağım.

Ya da özel alanı herhangi bir şekilde içerik kısmında görüntüleyebilir miyim?
 

 

elektronikssl
webimgo

wpuzman wpuzman WordPress Developer Kullanıcı
  • Üyelik 13.01.2017
  • Yaş/Cinsiyet 33 / E
  • Meslek Yazılım
  • Konum Trabzon
  • Ad Soyad B** M**
  • Mesajlar 2771
  • Beğeniler 293 / 949
  • Ticaret 33, (%100)
Arama sayfası post_meta ları göstermez. Özel alan dediğiniz post_meta oluyor.

İstediğinizi yapma kısmına gelecek olursak, sanırım filtreleme yapmak istiyorsunuz. Bunun için öncelikle özel query oluşturmanız gerek.


$args_query = array(
'order' => 'DESC',
);

$query = new WP_Query( $args_query );

if( $query->have_posts() ) {
while( $query->have_posts() ) {
$query->the_post();
the_title( '', '
' );
}
} else {
esc_attr_e( 'Yazı bulunamadı' );
}

wp_reset_postdata();


Bu şekilde yazıları gösterdik. Şimdi özel alanlara göre yazıları gösterelim. Bunun için meta_query kullanmanız gerekiyor. Şöyle:


$args_query = array(
'order' => 'DESC',
'meta_query' => array(
array(
'key' => 'imdb_id',
'value' => 'tt4154664',
'compare' => '=',
)
)
);

$query = new WP_Query( $args_query );

if( $query->have_posts() ) {
while( $query->have_posts() ) {
$query->the_post();
the_title( '', '
' );
}
} else {
esc_attr_e( 'Yazı bulunamadı' );
}

wp_reset_postdata();


meta_query ile ilgili bir çok özellik var. Büyük (>) küçük (<) IN vs. Araştırarak öğrenebilirsin. Ayrıca $_GET parametresi ile daha gelişmiş filtreler yapabilirsin. Kolay gelsin.
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al