Başlangıç

WBots, Wordpress ile %100 uyumlu olarak dizayn edilmiştir. Ancak; WBots'u farklı scriptler ile entegre ederek kullanabilmeniz için; Client Dosyası Oluşturma Rehberini oluşturduk.

Kullanmış olduğunuz script için client dosyasını düzenleyebilmeniz için adım adım tüm fonksiyonları burada açıkladık. Aşağıdaki adımları ve test işlemlerini gerçekleştirerek scriptiniz için client dosyasını oluşturabilirsiniz.

Scriptinizin WBots ile entegrasyonu için kullanacağınız hazır client dosyasını indirmek için aşağıdaki bağlantıyı kullanabilirsiniz.

Client Dosyasını İndirmek İçin Kullanıcı Girişi Yapmalısınız.

İndirdiğiniz client dosyasını açıp, aşağıdaki adımları dikkatlice uygulayın ve test edin.

Güvenlik Anahtarları

#Bağlantı güvenliği için otomatik oluşturulan anahtarlar.
$clientKey = "0000000000000000000000000000000000000000000000000000000000000000";
$wbotsKey  = "1111111111111111111111111111111111111111111111111111111111111111";

Client Dosyasında; $clientKey ve $wbotsKey adında 2 adet değişken mevcuttur.

  • clientKey : client dosyasına gelen isteklerde güvenlik için kullanılır.
  • wbotsKey : clientten WBots'a gönderilen isteklerde doğrulama için kullanılır.

Test işlemleri esnasında clientKey ve wbotsKey değişken değerlerini asla değiştirmeyiniz.

dbConnect fonksiyonu

    private function dbConnect() {
        ##################################
        # Veritabanı bilgilerini düzenle #
        ##################################
        $hostname = "localhost";
        $database = "database_name";
        $username = "username";
        $password = "password";

        try {
            $this->db = new PDO("mysql:host=$hostname;dbname=$database;charset=utf8", $username, $password);
        } catch ( PDOException $e ){
            die("Connection Failed");
        }
    }

dbConnect fonksiyonunda; $hostname, $database, $username, $password değişkenlerine veritabanı erişimi için gerekli olan bilgileri giriniz.

validation fonksiyonu

    public function validation($step) {
        $this->logOnCtrl();
        switch($step) {
            case 1:
                $this->sendJSON(array("validation"=>1));
                break;
            case 2:
                ###########################################################
                # system ve systemVer elemanlarını scriptine göre düzenle #
                ###########################################################
                $this->sendJSON(array(  "validation"=>2,
                                        "system"    =>"Özel Script",
                                        "systemVer" =>"1.00",
                                        "clientVer" =>$this->clientVersion));
                break;

        }

    }

validation fonksiyonunda case 2: alanında; dizide belirtilen system ve systemVer elemanlarının değerlerini scriptinizin bilgilerine göre değiştiriniz.

sync fonksiyonu

    public function sync($operation) 

sync fonksiyonunu 3 adımda inceleyeceğiz. Sync fonksiyonunda anahtar (switch) üzerinde 1,2 ve 3 sayısal değeri için işlem yapılmaktadır.

  • case 1: Kategori eşleştirmeleri için düzenlenmesi gereken alan.
  • case 2: Özel alan eşleştirmeleri için düzenlenmesi gereken alan.
  • case 3: Yazar eşleştirmeleri için düzenlenmesi gereken alan.

case 1: Kategori Eşleştirmeleri

            case 1:
                #################################################################
                # Veritabanındaki kategorileri id ve title olarak almak için    #
                # SQL sorgusunu ve döngü içindeki alanları düzenle              #
                #################################################################
                $categories = array();
                $rows = $this->db->query("SELECT * FROM categories")->fetchAll(PDO::FETCH_ASSOC);
                foreach( $rows as $row ){
                    $categories[] = array (
                        "cat_ID"    =>$row['id'],
                        "cat_name"  =>$row['title']
                    );
                }
                $this->sendJSON(array(  "sync"      =>1,
                                        "values"    =>$categories),2);
                
                break;

Veritabanınızdaki kategori tablosundan; kategori idleri ve kategori başlıklarının belirtilen formatta gelmesi için ilgili kod bloğunu düzenlemeniz gerekmektedir.

case 2: Özel Alan Eşleştirmeleri

            case 2:
                #####################################################################
                # Veritabanında manşet vb. gibi alanlara WBots üzerinden            #
                # 1 - 0 vb. değerler verebilmek için ilgili sütun adlarini alıyoruz.#
                # İlgili alanları alabilmek için aşağıdaki SQL sorgusunu, sütun     #
                # bilgilerini ve göz ardı edilecek sütunları düzenleyin.            #
                #                       (ZORUNLU DEĞİLDİR!)                         #
                #####################################################################

                $lastPost   = $this->db->query("SELECT * FROM contents order by id desc limit 1")->fetch(PDO::FETCH_ASSOC);
                if(!$lastPost) die();
                
                //Ornek
                $ignoreList = array("id","title","description","content","tags","main_img","category_id","author_id","create_date","update_date","status");
                
                $tmp        = array();
                foreach($lastPost as $key => $val) {
                    if(in_array($key,$ignoreList)) continue;
                    $tmp[$key]  =  array($val);
                }
                
                $meta   = array(
                    "id"    => $lastPost["id"], //son icerige ait id
                    "title" => $lastPost["title"], //son icerige ait baslik
                    "meta"  => $tmp
                );
                
                $this->sendJSON(array(  "sync"      =>2,
                                        "values"    =>$meta),2);
                                        
                break;

İçerik gönderimi esnasında scriptinizin özel alanlarına da değerler vererek, manşet, görünüm vb. ayarları da değiştirebilmek için özel alanları kullanabilirsiniz. Bunun için case 2 alanındaki kod bloğunda değişiklikler yapmalısınız.

Bu özel alanlar içerikler tablosunda bulunuyorsa; id, title, description, content gibi alanları $ignoreList değişkeninde tanımlanan dizi içerisinde belirterek göz ardı etmelisiniz. Çünkü title, content gibi alanlar post_insert fonksiyonunda tanımlanacaktır. Özel alan olarak bu alanları tekrar tanımlamaya gerek yoktur.

case 3: Yazar Eşleştirmeleri

            case 3:
                #####################################################################
                # WBots'tan gönderilen içeriklerde yazar bilgisini panel üzerinden  #
                # değiştirebilmek için aşağıdaki SQL sorgusunu ve sütun bilgilerini #
                # düzenleyiniz. (ZORUNLU DEĞİLDİR!)                                 #
                #####################################################################

                $users = array();
                $rows = $this->db->query("SELECT * FROM authors")->fetchAll(PDO::FETCH_ASSOC);
                foreach( $rows as $row ){
                    $users[] = array (
                        "author_ID"    =>$row['id'],
                        "author_name"  =>$row['fullname']
                    );
                }
                
                $this->sendJSON(array(  "sync"      =>3, 
                                        "values"    =>$users),2);
                
                break;

WBots Panelini üzerinden varsayılan yazar belirleme, kategori bazlı yazar belirleme gibi özellikleri kullanabilmek için; case 3 alanındaki SQL kodunu ve kod bloklarını düzenleyiniz.

post_insert fonksiyonu

    private function post_insert($post) 

post_insert fonksiyonu ile içerik çekimi işlemlerini gerçekleştiriyoruz. Fonksiyon içerisinde $post değişkeni ile gelen veriler client dosyasında detaylı olarak belirtilmektedir. Temel olarak değiştirilmesi gereken noktaları burada belirteceğiz. Bu değişiklikler haricinde scriptinize özel değişiklikleri de client üzerinden gerçekleştirebilirsiniz.

        #Aynı içerik daha önce yüklenmişse tekrar yüklemiyoruz...
        $find = $this->db->prepare("SELECT id,title,content FROM contents WHERE title=?");
        $find->execute(array($title)); 
        $findPosts = $find->fetchAll();

        $cc1 = strip_tags($content);
        foreach($findPosts as $findPost) { 
            $cc2 = strip_tags($findPost['content']);
            
            if($cc1==$cc2){
                #Varsayılan Link Formatı için ÖR:  siteadresi/title-id (ÇIKTI: https://siteadresi.com/bir-icerik-basligi-15120) 
                $permalink = $siteURL."/".$this->generateSeoURL($title,128)."-".$findPost['id'];
                return $permalink;
            }
        } 

Gelen içeriklerde bire bir aynı olan içeriğin eklenmemesi için kontrol sağlayan kod bloğunda; SQL kodunu ve permalink değişkenini içerik link formatınıza göre düzenleyerek ilgili kod satırlarında değişiklik gerçekleştirmelisiniz.

        if(isset($categories[0])) {
            #Scriptinizde çoklu kategori özelligi varsa categories dizisine gelen 
            #category idlerini buna göre düzenleyebilirsiniz.
            $category_id    = $categories[0];
        } else {
            #Varsayilan Kategori id'si.
            $category_id    = 1;
        }

WBots; çoklu kategori seçimine izin verdiği için kategoriler de array tipinde gönderilmektedir. Ancak genel olarak scriptler 1 adet kategori eşleştirmesine izin verdiği için 1. kategori eşleştirmesi dikkate alınacak şekilde kod bloğu oluşturulmuştur. Scriptinize göre ilgili kod bloğunu düzenleyebilirsiniz.

        #####################################################################################################
        # Özel Alanlar Kullanılıyorsa "Varsayılan Değerleri" Tanımlıyoruz.                                  #
        # ÖR: headline 1 değeri ile gönderilirse ilgili içerik manşette gözükür.                            #
        # ÖR: comment 1 değeri ile gönderilirse ilgili içerik için yorum yapılabilir izni verilmiş olur.    #
        #####################################################################################################
        $headline       = isset($sfields['headline'])   ? intval($sfields['headline'])  : 0;
        $comment        = isset($sfields['comment'])    ? intval($sfields['comment'])   : 0;

Özel alanlarda gelen verilerde hem varsayılan değer belirlemek için, hem de ilgili alanları belirlemek için yukarıdaki şekilde bir kod bloğu oluşturulmuştur. Bu kod bloğunu scriptinize göre düzenleyebilirsiniz.

        #Status = 0 olarak tutuyoruz. Resim işlemleri bitmeden içeriği aktifleştirmiyoruz.
        $query  = $this->db->prepare("INSERT INTO contents SET title=?, description=?, content=?, tags=?, headline=?, comment=?, category_id=?, author_id=?, create_date=?, status=?");
        $insert = $query->execute(array($title,$excerpt,$content,$tags,$headline,$comment,$category_id,$author,$timeStamp,0));

Resim upload işlemleri öncesinde içeriği veritabanına yüklüyoruz. İlgili SQL kodlarını scriptinize göre düzenleyebilirsiniz.

        #Varsayılan Link Formatı için ÖR:  siteadresi/title-id (ÇIKTI: https://siteadresi.com/bir-icerik-basligi-15126) 
        $permalink = $siteURL."/".$this->generateSeoURL($title,128)."-".$post_id;

Son olarak sitenize eklenen içeriğin linkini WBots'a geri göndermek için permalink değişkenini düzenliyoruz.

Son Adım

Tüm kontrol adımlarını tamamladıysanız, sizi tebrik ediyoruz .

Tüm kontrol adımlarını başarılı bir şekilde tamamladıktan sonra;

Sayfasında; Site Ekle butonuyla açılan popup penceresinde site entegrasyonu işlemine başlayabilirsiniz. İlgili ekranda site adresi bilgisini girip, sonraki adıma geçtiğinizde; karşınıza gelen güvenlik keylerini client dosyanızdaki güvenlik keyleri ile değiştiriyorsunuz ve ekranda belirtilen "https://siteniz.com/wbots.client-xxxxxxx.php" formatındaki adreste gözükecek şekilde upload ediyorsunuz. Bu işlem sonrasında site entegrasyonunun başarıyla tamamlanması gerekmektedir.