Wordpress bana göre günümüz web teknolojileri arasındaki en kapsamlı sistemlerden birisidir... Bu sistem ile yapabilecekleriniz hayal dünyanız ile sınırlı; en azından benim için öyle :)

Bugün sizler ile Wordpress'in paylaşılmamış detaylı arama sistemi hakkında konuşacağım ve tüm bilgilerimi buraya aktaracağım. Eminim ki bu sistemi bir çok kişi aramıştır lakin sitelerde kesin bir bilgiye rastlamamıştır. Lakin bugün sadece *** üyelerine özel bu özelliği en detaylı bir şekilde anlatmaya çaışacağım.

Demo:
http://emlakilanlari.me.cf/?s=a burdan detaylı ilan arayabilirsiniz. Bu sistemin aynısıdır...

Sistemin kullanılacağı alanlar:



  1. Emlak ve ilan sistemleri

  2. Detaylı arama gerekli alışveriş sistemleri

  3. Detaylı arama katarak kullanıcılarına kolaylık sağlamak isteyen tüm blog, video ve oyun sistemleri



Sistemin Kurulması

Öncelikle tema klasörünüzde var olan "search.php" dosyanızı açın...



Yukarıda belirtilen kodun hemen üzerine;

if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} else if ( get_query_var('page') ) {
$paged = get_query_var('page');
} else {
$paged = 1;
}
$args = array(
'post_type' => 'post',
'orderby' => 'title',
'order' => DESC,
'paged' => $paged
);
query_posts($args);
?>


Daha sonra ise eğer pagenavi gibi bir eklenti kullanıyor isek bu eklenti kodlarının hemen altına ise;



Yukarıdaki kodu ekleyerek ilk kurulumu bitirmiş olduk. Şimdi ise yukarıdaki kodun ne manaya geldiğini tek tek açıklayacağım...

$args = array(
'post_type' => 'post',
'orderby' => 'title',
'order' => DESC,
'paged' => $paged
);
?>


Yukarıdaki kodun manası; tüm aranılan yazıların sıralamasını bşlığına göre "z"den "a"ya doğru yap demektir. Biz eğer "DESC" yerine "ASC" yazarsak tüm yazıları "a"dan "z"ye doğru sıralar.

Şimdi biz eğer 'orderby' =>title yerine 'orderby' => date yazarsak bu sefer sıralamaları tarihe göre yapar. Burda sıralamayı yeniden eskiye doğru yapmak için 'order' => DESC olmalıdır eğerki eski tarihten yeni tarihe doğru sıralama istiyorsak yazılarımızı bu sefer 'order' => ASC olması gerek...

Bu tüm aramalar için yapılan sıralama işlemiydi. Şimdi bu sıralama işlemini dinamik hale getirmesini göstereceğim...

Dinamik sıralama yöntemi:

if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} else if ( get_query_var('page') ) {
$paged = get_query_var('page');
} else {
$paged = 1;
}
$args = array(
'post_type' => 'post',
'orderby' => 'title',
'order' => DESC,
'paged' => $paged
);
query_posts($args);
?>


Yukarıdaki kodu daha önce sistemimizi oluşturmak için eklemiştil. Şimdi ise bu kodun üzerine ise ;


<script>
jQuery(document).ready(function($) {
function insertParam(key, value)
{
key = escape(key); value = escape(value);

var kvp = document.location.search.substr(1).split('&');

var i=kvp.length; var x; while(i--)
{
x = kvp[i].split('=');

if (x[0]==key)
{
x[1] = value;
kvp[i] = x.join('=');
break;
}
}

if(i<0) {kvp[kvp.length] = [key,value].join('=');}

//this will reload the page, it's likely better to store this until finished
document.location.search = kvp.join('&');
}
function removeParameter(url, parameter)
{
var urlparts= url.split('?');

if (urlparts.length>=2)
{
var urlBase=urlparts.shift(); //get first part, and remove from array
var queryString=urlparts.join("?"); //join it back up

var prefix = encodeURIComponent(parameter)+'=';
var pars = queryString.split(/[&;]/g);
for (var i= pars.length; i-->0;) //reverse iteration as may be destructive
if (pars[i].lastIndexOf(prefix, 0)!==-1) //idiom for string.startsWith
pars.splice(i, 1);
url = urlBase+'?'+pars.join('&');
}
return url;
}
$('select[name=oncelik]').change(function() {
var current_option = $(this).find('option:selected').val();
if(current_option == 'ad') {
insertParam('oncelik', 'ad')
} else if(current_option == 'tarih') {
insertParam('oncelik', 'tarih')
} else if(current_option == 'fiyat') {
insertParam('oncelik', 'fiyat')
}
});
$('select[name=siralama]').change(function() {
var current_option = $(this).find('option:selected').val();
if(current_option == 'DESC') {
insertParam('siralama', 'DESC')
} else if(current_option == 'ASC') {
insertParam('siralama', 'ASC')
}
});
});
</script>



Yukarıdaki kodu ekleyelim... Yukarıdaki kod sıralamamızı dinamik hale getirmek için kullanacağınız. Şimdi bu kodu yaptıktan sonra bu koda uygun html kodu oluşturmalıyız ve daha sonra bu konuyu toparlayacağım...






















Yukarıdaki kod dinamik sıralama yapmak için sadece örnek bir kod olup siz bu kodu kendi temanıza uyarlayabilirsiniz örnek alarak...

Şimdi Yukarıdaki kodda sıralama yapmak için "" vardır...

Bu veriler daha önce verdiğim script kodlarına bilgi göndererek sıramanın nasıl yapılacağını php $_GET[] metodu ile belirliyor...

Peki bu metodu şimdi nasıl sıralamada kullanacağız ? Öncelikle yukarıdaki html kodları ile javascript kodlarından alınan verileri php kodlarına yansıtalım...


$siralama = $_GET["siralama"];
if($siralama == "") {
$siralama = "DESC";
} else {
$siralama = $siralama;
}
$siralama_onceligi = $_GET['oncelik'];
if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
} else if ( get_query_var('page') ) {
$paged = get_query_var('page');
} else {
$paged = 1;
}
if($siralama_onceligi == "ad") {
$args = array(
'post_type' => 'post',
'orderby' => 'title',
'order' => $siralama,
'paged' => $paged
);
} elseif($siralama_onceligi == "tarih") {
$args = array(
'post_type' => 'post',
'orderby' => 'date',
'order' => $siralama,
'paged' => $paged
);
} else {
$args = array(
'post_type' => 'post',
'paged' => $paged
);
}
query_posts($args);
?>


Yukarıdaki kodda html ve javascriptten gelen verileri kullandık. Şimdi bu veriler ne anlama geliyor;

$siralama = $_GET["siralama"];

Bu kod verilerin çoktan aza mı yoksa azdan çoğa doğru mu sıralanacağının bilgisini almaktadır...

$siralama_onceligi = $_GET['oncelik'];

Bu kod tarihe göre mi yoksa ada göre mi sıranacağının bilgisini almaktadır...

Sizler bu kodlara göre kendi temanıza göre uyarladığınız takdirde istediğiniz sonucu alabileceksiniz...

Bu dersin devamını ve daha detaylı arama sistemini 2. derste anlatacağım...

Şimdiden saygılarım ile ;)