moryesil adlı üyeden alıntı


normal wordpress döngü sistemi içerisinde query_post ile kategori seçimi yapabiliyoruz. bunun author.php ye uygulanmış şeklinden bahsediyorum.


WordPress döngü yapısıyla ilgili bilginiz olduğunu varsayarak:
Öncelikle giriş yapmamış kullanıcıların author.php dosyasını açmaması için, is_user_logged_in() fonksiyonu ile kontrol yapabilirsiniz.
if ( is_user_logged_in() ) {
//Bir kullanıcı giriş yapmış
//Author.php içeriği buraya gelecek
} else {
echo 'Üye iseniz lütfen, giriş yapınız';
}
?>

Kullanıcı giriş yapmış ise, kullanıcının ID'sini elde etmek için wp_get_current_user() fonksiyonunu kullanacağız (http://codex.wordpress.org/Function_Reference/wp_get_current_user)

if ( is_user_logged_in() ) {
$uyebilgi = wp_get_current_user();
$uye_id = $uyebilgi->ID;
} else {
echo 'Üye iseniz lütfen, giriş yapınız';
}
?>

Üyenin ID'sini aldıktan sonra bunu kullanarak, yazarı bu üye olan yazıları get_posts() fonksiyonu (http://codex.wordpress.org/Template_Tags/get_posts) ile önce destek (ID'si 5 olsun) kategorisindeki yazıları çekelim.

if ( is_user_logged_in() ) {
$uyebilgi = wp_get_current_user();
$uye_id = $uyebilgi->ID;

$destekmesajlari = get_posts( 'cat=5&post_per_page=-1&author=' . $uye_id );
//Yazıların alınmasını özelleştirmek için parametrelerle ilgili bilgiye
//verdiğim adresten ulaşabilirsiniz. WP_Query ile aynı parametreleri kullanır.
if($destekmesajlari ){
//Üyenin destek mesajları varsa
//döngüye alıp, istediğiniz gibi gösterin. Bu size kalmış
echo '

Destek Mesajlarınız

';
echo '
    ';
    foreach ($destekmesajlari as $destekmesaji) {
    echo "
  • ".$destekmesaji->post_title."
  • ";
    }
    echo '
';
}else{
echo 'destek mesajınız yok';
}

} else {
echo 'Üye iseniz lütfen, giriş yapınız';
}
?>


Bu kodlara bir de sipariş kategorisindeki (ID'si 17 olsun) üyenin yazılarını çekip, gösterecek kodu ekleyelim.


if ( is_user_logged_in() ) {
$uyebilgi = wp_get_current_user();
$uye_id = $uyebilgi->ID;

$destekmesajlari = get_posts( 'cat=5&post_per_page=-1&author=' . $uye_id );
//Yazıların alınmasını özelleştirmek için parametrelerle ilgili bilgiye
//verdiğim adresten ulaşabilirsiniz. WP_Query ile aynı parametreleri kullanır.
if($destekmesajlari ){
//Üyenin destek mesajları varsa
//döngüye alıp, istediğiniz gibi gösterin. Bu size kalmış
echo '

Destek Mesajlarınız

';
echo '
    ';
    foreach ($destekmesajlari as $destekmesaji) {
    echo "
  • ".$destekmesaji->post_title."
  • ";
    }
    echo '
';
}else{
echo 'destek mesajınız yok';
}

$siparisler= get_posts( 'cat=17&post_per_page=-1&author=' . $uye_id );
//Yazıların alınmasını özelleştirmek için parametrelerle ilgili bilgiye
//verdiğim adresten ulaşabilirsiniz. WP_Query ile aynı parametreleri kullanır.
if($siparisler){
//Üyenin siparişleri varsa
//döngüye alıp, istediğiniz gibi gösterin. Bu size kalmış
echo '

Siparişleriniz

';
echo '
    ';
    foreach ($siparisler as $siparis) {
    echo "
  • ".$siparis->post_title."
  • ";
    }
    echo '
';
}else{
echo 'Siparişiniz yok.';
}

} else {
echo 'Üye iseniz lütfen, giriş yapınız';
}
?>


Verdiğim kodları kendi author.php dosyanıza göre düzenlemeniz gerekmektedir. Bu haliyle sadece yazıların başlıklarını liste olarak, biçimsiz bir şekilde gösterecektir. Yazıların sıralarını değiştirmek falan isterseniz get_posts fonksiyonunun sıralama parametrelerini inceleyip, uygulayın.
Yaptığımız işlemlerin mantığı şu,
Kullanıcı giriş yaptıysa
kullanıcının ID'sini al
Bu ID'ye ait destek ve sipariş kategorilerindeki yazıları al
Yazıları uygun şekilde yazdır.
Dolayısıyla giriş yapmamış biri, Giriş yapınız mesajıyla karşılacak
Giriş yapmış biri de kendi bilgilerini görecek.