15 Eylül 2009

Kullanıcı Profiline Yeni Alanlar Ekliyoruz

WordPress Yorum Ekle

WordPress Kullanıcı Profiline Yeni Alanlar EkliyoruzWordPress'teki üyelik sistemini etkin kullananlar, çoğu zaman kullanıcı profilindeki bilgilerin yetersiz olduğunu düşünürler. Bunu gidermek için çeşitli eklentiler mevcut, ama eklenti kullanmadan da kullanıcı profiline yeni alanlar ekleyebilir ve bunları sitenizde gösterebilirsiniz ya da kullanıcılarla ilgili yazacağınız, kullanıcılar ile ilgili eklentilerde bahsedeceğim yöntemi kullanmak isteyebilirsiniz.
Senaryomuz şu; kullanıcının profil ekranına, kullanıcının Doğum tarihini ve Twitter kullanıcı adını girebileceği iki alan ekleyelim. Ardından da kullanıcının girdiği bu bilgileri sitemizde nasıl gösterebileceğimize bakalım. Tabi biz basit iki alan ekliyoruz ama siz yöntemi inceleyerek, daha farklı ve fazla alan ekleyebilirsiniz.

Alanlarımızı Ekliyoruz

Aşağıdaki kodları temanızın Tema fonksiyonları (functions.php) dosyasına uygun şekilde ekleyiniz (açıklamalar kod içerisindedir).

  1. </table>
  2. add_action( 'show_user_profile', 'ekstra_bilgi_alanlarini_goster' );
  3. add_action( 'edit_user_profile', 'ekstra_bilgi_alanlarini_goster' );
  4. //Kullanıcı profil ekranına girildiğinde
  5. //bilgi alanlarımızın gösterileceği aşağıdaki fonksiyonu
  6. //çağırıyoruz.
  7. function ekstra_bilgi_alanlarini_goster( $user ) { ?>
  8.   <h3>Ekstra Kullanıcı Bilgileri</h3>
  9.    <table class="form-table">
  10.     <tr>
  11.      <th><label for="dtarihi">Doğum Tarihiniz</label></th>
  12.      <td>
  13.        <input type="text" name="dtarihi" id="dtarihi" value="<?php echo esc_attr( get_the_author_meta( 'dtarihi', $user->ID ) ); ?>" class="regular-text" /><br />
  14.        <span class="description">Lütfen doğum tarihinizi giriniz (gg.aa.yyyy).</span>
  15.     </td>
  16.    </tr>
  17.    
  18.    <tr>
  19.     <th><label for="twitter">Twitter</label></th>
  20.     <td>
  21.      <input type="text" name="twitter" id="twitter" value="<?php echo esc_attr( get_the_author_meta( 'twitter', $user->ID ) ); ?>" class="regular-text" /><br />
  22.      <span class="description">Lütfen Twitter kullanıcı adınızı giriniz.</span>
  23.    </td>
  24.   </tr>
  25.  
  26. </table>
  27. <?php }
  28. &#91;/php]
  29. Kod ile alan eklemede kullandığımız fonksiyonumuzun, kullanıcı profili gösterilirken ya da düzenlenirken çalıştırılmasını sağlıyoruz. Fonksiyon içerisinde ise tablo kullanarak form elemanlarımızı uygun şekilde ekliyoruz. Kullandığımız tablo yapısı form alanlarımızın daha düzgün çıkmasını sağlıyor. Kodu ekleyip, bir kullanıcının bilgilerini görüntülediğinde aşağıdaki resimde göreceğiniz üzere bilgilerin en altında alanlarımız oluşacak.
  30. <img src="http://www.yakupgovler.com/tr/wp-content/dosyalar/2009/09/ekstra_bilgi_alanlarimiz.png" alt="" title="Ekstra Bilgi Alanlarımız" width="470" height="321" class="alignnone size-full wp-image-1074" />
  31. <em>Eklediğimiz bilgi alanlarının, kullanıcı profilindeki görünümü</em>
  32. Tabi ki bu haliyle girdiğiniz bilgiler kaydedilmeyecektir. Bu işlem için eklememiz gereken birkaç satır daha var.
  33. <h4>Bilgileri Ekleyip/Güncelliyoruz</h4>
  34. Aşağıdaki kodları, yukarıdaki kodların devamına uygun şekilde ekleyiniz.
  35. [php]
  36. add_action( 'personal_options_update', 'ekstra_bilgileri_kaydet' );
  37. add_action( 'edit_user_profile_update', 'ekstra_bilgileri_kaydet' );
  38.  
  39. function ekstra_bilgileri_kaydet( $user_id ) {
  40.  if ( !current_user_can( 'edit_user', $user_id ) )
  41.    return false;
  42. //Kullanıcının yetkisi varsa güncelle
  43.  
  44. //Her bir alan için aşağıdaki satırları çoğaltmanız
  45. //gerekiyor. Kod içerisindeki alan adlarının
  46. //kullanıcı profiline eklediklerinizle aynı olması
  47. //gerektiğini unutmayın.
  48. //Ayrıca bilgileriniz özel bir formatta olacaksa
  49. //onu kontrol etmeyi ve filtreleme yapmayı unutmayın.
  50.  
  51.  update_usermeta( $user_id, 'dtarihi', $_POST['dtarihi'] );
  52.  update_usermeta( $user_id, 'twitter', $_POST['twitter'] );
  53. }

Kodu açıklamaya sanırım gerek yok. Kodu ekledikten sonra kullanıcı bilgilerini görüntüleyip, ilgili alanları doldurdurun ve Profili Güncelleyin. Girdiğiniz bilgilerin de güncellendiğini göreceksiniz.

Ekstra Bilgi Alanlarımız Güncellendi

Ekstra Bilgileri Sitemizde Gösteriyoruz

Girilen bu alanlardaki bilgileri sitenizin bir yerlerinde göstermek isterseniz, the_author_meta() fonksiyonu aşağıdaki gibi kullanabilirsiniz.



kullanıcısını Twitter'da takip et
Justin Tadlock


Bu yazının kısa bağlantısı http://www.yakupgovler.com/?p=1072.

Yazılarımı RSS aboneliği ile takip edebilir, yeni yazılarıma kolaylıkla ulaşabilirsiniz. Bunun için ise RSS adresimi kullanabilirsiniz.


“Kullanıcı Profiline Yeni Alanlar Ekliyoruz” yazısı için 6 Yorum

Bu yazıya yapılan yorumları dilerseniz, ( RSS 2.0 ) beslemesini kullanarak takibe alabilirsiniz.

  1. heytbecom dedi ki:

    esc_attr :)))

    - Justin Tadlock yazısını okumuştum ama denemeye hiç fırsatım olmamıştı. Gayet iyi çalışıyormuş. Ben aslında Role Manger sistemini bitirmesini bekliyorum. O zaman WordPress sistemini istediğimiz amaç ile kullanabileceğiz.

  2. Yakup Gövler dedi ki:

    @heytbecom, Role Manager'in Betasını yayınladı sanırım. Eklenti için bir de isim arıyordu.

  3. İlker Aksoy dedi ki:

    Harika... Çok işimize yarayacak... Kodlarınıza sağlık...

  4. joyologo dedi ki:

    çok faydalı bir paylaşım, özellikle plugin kullanmadan manuel yapılan uygulamalar daha çok dikkatimi çekiyor. teşekkürler..

  5. Amaç Dizayn dedi ki:

    Güzel bir özelleştirme olmuş.

  6. oyunlar dedi ki:

    Gerçekten güzel bir paylaşım olmuş işime yarayacağı kesin hatta kullanıyorum 🙂