https://www.halilbeycan.com/274.gif

Wordpress Üyeleri Rolleri İle Listeleme

241
7 ay önce
 0

Herkese selamlar arkadaşlar uzun bir aradan sonra tekrar karşınızdayım bu makalemde Wordpress Üyeleri Rolleri İle Listeleme konusunu ele alacağım.

Wordpress sitemizde ki üyeleri rolleri ve içerik sayıları ile beraber listeleyeceğiz lafı fazla uzatmadan anlatmaya başlayayım keyifli okumalar dilerim.

Peki bunu nasıl ve ne için kullanırız çok basit siteniz çoklu yöneticilerden ve rollerden oluşuyor ise bunu belirtmek için.

Veya yazarlarımız diye bir bölüm oluşturmak için kullanabilirsiniz.

Bu yazıyı daha iyi anlamanız için öncelikle Wordpress Özel Bileşen Yapımı Ve Bileşene Ayar Ekleme adlı makalemi okumanızı öneririm.

1 – Önce Bileşen İskeletimizi Oluşturalım

<?php
/*
 * Plugin Name: Multican sidebar yazarlar üyeler bileşeni
 * Description: Bu Bileşen Yazarlarınızı Üyelerinizi Listeleyebilirsiniz.
 * Version: 1.0
 * Author: Halil BEYCAN
 * Author URI: https://halilbeycan.com
 */
// authors yazan bölümlere kendi bileşen fonksiyon isminizi atayabilirsiniz misal bsite_yazarlar_bileseni türkçe karekter kullanmayın he
add_action( 'widgets_init', 'authors' );
function authors() {
 register_widget( 'authors' );
}
class authors extends WP_Widget {
function authors() {
 /* Widget settings */
 $widget_ops = array( 'classname' => 'authors', 'description' => __('Sidebar Yazarlar Bileşeni (Burası Açıklama)', 'authors') );
/* Create the widget */
 $this->WP_Widget( 'authors', __('#Multican : Sidebar Yazarlar Bileşeni ( Burası Başlık)', 'authors'), $widget_ops );
 }
function widget( $args, $instance ) {
// burada ise değerlerini çektiğimiz ayarları değişkenlere aktaracağız
 ?>
<!-- Kodlarımız buraya gelecek -->
 <?php
 echo $after_widget;
 } 
function update( $new_instance, $old_instance ) {
  $instance = $old_instance;
    // buraya ayarların değerini çekeceğiz
    return $instance;
    }
function form( $instance ) {
 $instance = wp_parse_args( (array) $instance, $defaults ); 
 ?>
    <!-- burası bileşenler bölümünde gözükecek olan ayarlarımız html ile oluşturacağımız bölüm -->
 <?php
 }
}
register_widget('authors');
?>

Yukarıda wordpress bileşen iskeletimizi oluşturduk bunu functions.php dosyamızın en sonuna ekleyin.

2 – Bileşen Ayar Bölümümüzü Yapalım

     <p>
        <label for="<?php echo $this->get_field_id('adminshow') ?>">Adminler Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['adminshow'] ); ?> id="<?php echo $this->get_field_id( 'adminshow' ); ?>" name="<?php echo $this->get_field_name( 'adminshow' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('editor') ?>">Editörler Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['editor'] ); ?> id="<?php echo $this->get_field_id( 'editor' ); ?>" name="<?php echo $this->get_field_name( 'editor' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('author') ?>">Yazarlar Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['author'] ); ?> id="<?php echo $this->get_field_id( 'author' ); ?>" name="<?php echo $this->get_field_name( 'author' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('contri') ?>">İçerik Sağlayıcıları Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['contri'] ); ?> id="<?php echo $this->get_field_id( 'contri' ); ?>" name="<?php echo $this->get_field_name( 'contri' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('sub') ?>">Abone Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['sub'] ); ?> id="<?php echo $this->get_field_id( 'sub' ); ?>" name="<?php echo $this->get_field_name( 'sub' ); ?>" />
      </p>

Yukarıdaki kodu <!– burası bileşenler bölümünde gözükecek olan ayarlarımız html ile oluşturacağımız bölüm –> dediğim alana yapıştırabilirsiniz.

Kodumuz şu görüntüyü almış bulunmakta.

<?php
/*
 * Plugin Name: Multican sidebar yazarlar üyeler bileşeni
 * Description: Bu Bileşen Yazarlarınızı Üyelerinizi Listeleyebilirsiniz.
 * Version: 1.0
 * Author: Halil BEYCAN
 * Author URI: https://halilbeycan.com
 */
// authors yazan bölümlere kendi bileşen fonksiyon isminizi atayabilirsiniz misal bsite_yazarlar_bileseni türkçe karekter kullanmayın he
add_action( 'widgets_init', 'authors' );
function authors() {
 register_widget( 'authors' );
}
class authors extends WP_Widget {
function authors() {
 /* Widget settings */
 $widget_ops = array( 'classname' => 'authors', 'description' => __('Sidebar Yazarlar Bileşeni (Burası Açıklama)', 'authors') );
/* Create the widget */
 $this->WP_Widget( 'authors', __('#Multican : Sidebar Yazarlar Bileşeni ( Burası Başlık)', 'authors'), $widget_ops );
 }
function widget( $args, $instance ) {
// burada ise değerlerini çektiğimiz ayarları değişkenlere aktaracağız
 ?>
<!-- Kodlarımız buraya gelecek -->
 <?php
 echo $after_widget;
 } 
function update( $new_instance, $old_instance ) {
  $instance = $old_instance;
    // buraya ayarların değerini çekeceğiz
    return $instance;
    }
function form( $instance ) {
 $instance = wp_parse_args( (array) $instance, $defaults ); 
 ?>
      <p>
        <label for="<?php echo $this->get_field_id('adminshow') ?>">Adminler Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['adminshow'] ); ?> id="<?php echo $this->get_field_id( 'adminshow' ); ?>" name="<?php echo $this->get_field_name( 'adminshow' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('editor') ?>">Editörler Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['editor'] ); ?> id="<?php echo $this->get_field_id( 'editor' ); ?>" name="<?php echo $this->get_field_name( 'editor' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('author') ?>">Yazarlar Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['author'] ); ?> id="<?php echo $this->get_field_id( 'author' ); ?>" name="<?php echo $this->get_field_name( 'author' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('contri') ?>">İçerik Sağlayıcıları Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['contri'] ); ?> id="<?php echo $this->get_field_id( 'contri' ); ?>" name="<?php echo $this->get_field_name( 'contri' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('sub') ?>">Abone Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['sub'] ); ?> id="<?php echo $this->get_field_id( 'sub' ); ?>" name="<?php echo $this->get_field_name( 'sub' ); ?>" />
      </p>
 <?php
 }
}
register_widget('authors');
?>

Ve bileşenimiz yukarıdaki şekilde bir görünüm aldı. Gelin şimdi bu ayarları çekelim, veri tabanına kaydedelim ve değişkenlere atayalım.

3 – Bileşen Ayarlarını Çekme Veri Tabanına Çekme Ve Değişkenlere Atama

Aşağıdaki kodları // buraya ayarların değerini çekeceğiz dediğim yere kopyala yapıştır yapın.

$instance['adminshow'] = $new_instance['adminshow'] ? 1 : 0;
$instance['editor'] = $new_instance['editor'] ? 1 : 0;
$instance['author'] = $new_instance['author'] ? 1 : 0;
$instance['contri'] = $new_instance['contri'] ? 1 : 0;
$instance['sub'] = $new_instance['sub'] ? 1 : 0;

Aşağıdaki kodları // burada ise değerlerini çektiğimiz ayarları değişkenlere aktaracağız dediğim yere kopyala yapıştır yapın.

$adminshow = ! empty( $instance['adminshow'] ) ? '1' : '0';
$editor = ! empty( $instance['editor'] ) ? '1' : '0';
$author = ! empty( $instance['author'] ) ? '1' : '0';
$contri = ! empty( $instance['contri'] ) ? '1' : '0';
$sub = ! empty( $instance['sub'] ) ? '1' : '0';

Ve kodumuz aşağıda ki şekilde gözükecek

<?php
/*
 * Plugin Name: Multican sidebar yazarlar üyeler bileşeni
 * Description: Bu Bileşen Yazarlarınızı Üyelerinizi Listeleyebilirsiniz.
 * Version: 1.0
 * Author: Halil BEYCAN
 * Author URI: https://halilbeycan.com
 */
// authors yazan bölümlere kendi bileşen fonksiyon isminizi atayabilirsiniz misal bsite_yazarlar_bileseni türkçe karekter kullanmayın he
add_action( 'widgets_init', 'authors' );
function authors() {
 register_widget( 'authors' );
}
class authors extends WP_Widget {
function authors() {
 /* Widget settings */
 $widget_ops = array( 'classname' => 'authors', 'description' => __('Sidebar Yazarlar Bileşeni (Burası Açıklama)', 'authors') );
/* Create the widget */
 $this->WP_Widget( 'authors', __('#Multican : Sidebar Yazarlar Bileşeni ( Burası Başlık)', 'authors'), $widget_ops );
 }
function widget( $args, $instance ) {
$adminshow = ! empty( $instance['adminshow'] ) ? '1' : '0';
$editor = ! empty( $instance['editor'] ) ? '1' : '0';
$author = ! empty( $instance['author'] ) ? '1' : '0';
$contri = ! empty( $instance['contri'] ) ? '1' : '0';
$sub = ! empty( $instance['sub'] ) ? '1' : '0';
 ?>
<!-- Kodlarımız buraya gelecek -->
 <?php
 echo $after_widget;
 } 
function update( $new_instance, $old_instance ) {
  $instance = $old_instance;
    $instance['adminshow'] = $new_instance['adminshow'] ? 1 : 0;
    $instance['editor'] = $new_instance['editor'] ? 1 : 0;
    $instance['author'] = $new_instance['author'] ? 1 : 0;
    $instance['contri'] = $new_instance['contri'] ? 1 : 0;
    $instance['sub'] = $new_instance['sub'] ? 1 : 0;
    return $instance;
    }
function form( $instance ) {
 $instance = wp_parse_args( (array) $instance, $defaults ); 
 ?>
      <p>
        <label for="<?php echo $this->get_field_id('adminshow') ?>">Adminler Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['adminshow'] ); ?> id="<?php echo $this->get_field_id( 'adminshow' ); ?>" name="<?php echo $this->get_field_name( 'adminshow' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('editor') ?>">Editörler Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['editor'] ); ?> id="<?php echo $this->get_field_id( 'editor' ); ?>" name="<?php echo $this->get_field_name( 'editor' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('author') ?>">Yazarlar Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['author'] ); ?> id="<?php echo $this->get_field_id( 'author' ); ?>" name="<?php echo $this->get_field_name( 'author' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('contri') ?>">İçerik Sağlayıcıları Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['contri'] ); ?> id="<?php echo $this->get_field_id( 'contri' ); ?>" name="<?php echo $this->get_field_name( 'contri' ); ?>" />
      </p>
      <p>
        <label for="<?php echo $this->get_field_id('sub') ?>">Abone Gösterilsin:</label>
        <input class="checkbox" type="checkbox"<?php checked( $instance['sub'] ); ?> id="<?php echo $this->get_field_id( 'sub' ); ?>" name="<?php echo $this->get_field_name( 'sub' ); ?>" />
      </p>
 <?php
 }
}
register_widget('authors');
?>

Şuan bileşen yapısı hazır artık bileşen ayarı bölümümüzdeki değerleri çekerek üyeleri listeleme bölümünü oluşturabiliriz.

4 – Üyeleri Listeleme Bölümünü Yapalım

Aşağıda vereceğim kodları sırası ile <!– Kodlarımız buraya gelecek –> dediğim alana yapıştırın arkadaşlar.

<?php
    if ($adminshow == 1) {
       $adminshowx= 'administrator';
     } else {
       $adminshowx= 's';
     };
     if ($editor == 1) {
       $editorx= 'editor';
     } else {
       $editorx= 's';
     };
     if ($author == 1) {
       $authorx= 'author';
     } else {
       $authorx= 's';
     };
     if ($contri == 1) {
       $contrix= 'contributor';
     } else {
       $contrix= 's';
     };
     if ($sub == 1) {
       $subx= 'subscriber';
     } else {
       $subx= 's';
     };
     $siralama = 'registered'; 
     $sirala = 'DESC';
     $avatar_boyutu = 50;
     $bos_olani_goster = false;
     $roles1 = array($editorx, $contrix,$subx,$authorx,$adminshowx);
     $users1 = array();
     foreach($roles1 as $role1){
     $args1 = array(
                 'orderby' => $siralama,
                 'role' => $role1,
                 'order='=>$sirala
                 );
     $role_users1 = get_users($args1);
     $users1 = array_merge($role_users1, $users1);
     }
     $kullanicilar =$users1;
     $yazarlar = array();
     foreach ($kullanicilar as $kullanici) {
     $kul = get_userdata($kullanici->ID);
 
     if(!empty($bos_olani_goster)) {
          $sayac = count_user_posts($kul->ID);
          if($sayac < 1) continue;
          }
          $yazarlar[] = (array) $kul;
     }
     echo '<ul id="uyelist">';
     foreach($yazarlar as $yazar) {
             $gorunen_ad = $yazar['data']->display_name;
             $avatar = get_avatar($yazar['ID'], $avatar_boyutu);
             $yazar_profil_url = get_author_posts_url($yazar['ID']);
             $user_info = get_userdata($yazar['ID']);
             echo '<li class="uye-item">';
             echo '<div class="uye-avatar"><a href="', $yazar_profil_url, '">', $avatar , '</a></div>';
             echo '<div class="uye-itemic">';
             echo '<div class="uye-name"><a href="', $yazar_profil_url, '" class="contributor-link">', $gorunen_ad, '</a></div>';
             echo '<div class="uye-posts">İçerik Adeti:'.count_user_posts($yazar['ID']).'</div>';
                $degis    = implode( $user_info->roles);
                $bul      = array("administrator","author","subscriber","contributor","editor");
                $degistir = array("Admin","Yazar","Abone","İçerik Sağlayıcı","Editör");
                $degis    = str_replace($bul, $degistir, $degis);
             echo '<div class="uye-turu">Rol:'.$degis.'</div>';
             echo '</div>';
             echo '</li>';
          }
     echo '</ul>';
?>

Bu kodları kullanarak ve html öğelerin stilleri vererek güzel bir üyeler yazar tarzı bir eklenti hazırlayabilirsiniz arkadaşlar.

ve son görünümü

Bir sonraki makalemde görüşmek üzere sorularınızı ve merak ettiklerinizi yorum yaparak belirtebilirsiniz.

Yazar
{beycan1532@gmail.com}

Merhaba ben Halil Front-end developer ve wordpress tema geliştiricisiyim bilgisayara olan ilgim 10. yaşlarıma dayanmakta. 15-16 yaşlarımda bilgisayar kullanmayı iyice çözdüm ve programlamaya ilgi duymaya başladım ilk olarak visualbasic.net ile kendi çapımda kendim için programlar geliştirdim zamanla web'e ilgi duydum ve internet sitesi kurmak istedim tabi hosting domain bilmediğim için bedavasitem ve wix gibi siteler ile yapmıştım bunu ama sürekli araştıran öğrenen ve kendini geliştiren biri olduğum için kısa süre sonra domain ve hosting'in ne olduğunu öğrendim sonra ilk .com'lu sitemi açtım o sırada wordpress ile tanıştım zaten programlamaya ilgimin olması sayesinde wordpress için tema geliştirmek istedim ve ilk wordpress temamı hazır bir html şablonu wordpress'e entegre ederek hazırlamıştım sonrasında ise html, css ve js öğrenerek kendimi geliştirdim ve şuan müşterilim için front-end development ve wordpress tema geliştirme işleri yapıyorum.

Yorumlar (Yorum yapılmamış)

    Yorum Yapmak İstemezmisiniz.

Bir cevap yazın

Zorunlu Alanlar "*" İle İşaretlenmiştir