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).

PHP:
  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 }

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.

Eklediğimiz bilgi alanlarının, kullanıcı profilindeki görünümü
Tabi ki bu haliyle girdiğiniz bilgiler kaydedilmeyecektir. Bu işlem için eklememiz gereken birkaç satır daha var.

Bilgileri Ekleyip/Güncelliyoruz

Aşağıdaki kodları, yukarıdaki kodların devamına uygun şekilde ekleyiniz.

PHP:
  1. add_action( 'personal_options_update', 'ekstra_bilgileri_kaydet' );
  2. add_action( 'edit_user_profile_update', 'ekstra_bilgileri_kaydet' );
  3.  
  4. function ekstra_bilgileri_kaydet( $user_id ) {
  5.  if ( !current_user_can( 'edit_user', $user_id ) )
  6.    return false;
  7. //Kullanıcının yetkisi varsa güncelle
  8.  
  9. //Her bir alan için aşağıdaki satırları çoğaltmanız
  10. //gerekiyor. Kod içerisindeki alan adlarının
  11. //kullanıcı profiline eklediklerinizle aynı olması
  12. //gerektiğini unutmayın.
  13. //Ayrıca bilgileriniz özel bir formatta olacaksa
  14. //onu kontrol etmeyi ve filtreleme yapmayı unutmayın.
  15.  
  16.  update_usermeta( $user_id, 'dtarihi', $_POST['dtarihi'] );
  17.  update_usermeta( $user_id, 'twitter', $_POST['twitter'] );
  18. }

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.

PHP:
  1. <?php
  2. echo  the_author_meta( 'dtarihi' );
  3. ?>
  4. <?php if ( get_the_author_meta( 'twitter' ) ) { ?>
  5.     <a href="http://twitter.com/<?php the_author_meta( 'twitter' ); ?>" title="Twitter üzerinden <?php the_author_meta( 'display_name' ); ?> kullanıcısını takip et "><?php the_author_meta( 'display_name' ); ?> kullanıcısını Twitter'da takip et</a>
  6. <?php }

Girilen bilgiler veritabanınızda wp_usermeta tablosunda tutulmaktadır.

Thanks Justin Tadlock

Yazıyı Paylaş: Aşağıdaki simgeler kullanıcılarının web sitelerini paylaştığı ve yeni web sitelerini keşfettiği sitelere gider.
  • Oyyla
  • del.icio.us
  • Technorati
  • Bagcik
  • BlinkList
  • blogmarks
  • Bumpzee
  • Digg
  • feedmelinks
  • Furl
  • Tusul
  • Yumiyum
  • 100puan
  • Limk

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 5 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ş.

Yorum Yaz

*
Spam yorumlara karşı kullanılmaktadır.
Güvenlik Resmi

Yorum yazarken dikkat etmeniz gereken hususlar;

  1. Türkçe imla kurallarına dikkat etmeye özen gösteriniz.
  2. Yorumlar onay gerektirdiğinden birden fazla kez aynı yorumu yazmayınız.
  3. Yorumlarınızın konu ile alakalı olmasına özen gösteriniz.
  4. REKLAM KOKAN YORUMLAR YAPMAYIN, YAYINLAMIYORUM.
  5. Küfür, hakaret etmenizin ne bana, ne de size faydası olmadığını unutmayın.
  6. Yorum yapmanız, onaylanacağı anlamına gelmemektedir. Buradaki hususlara dikkat etmeniz, onaylanma şansını artıracaktır. Ayrıca kullanım şartlarını okumanızı tavsiye ederim.
Kodlarınızı yazmak için, [php][/php], [css][/css], [html][/html], [js][/js], [sql][/sql], [xml][/xml] veya [code][/code] kullanabilirsiniz. & lt; & gt; kullanmayın.