• 08-11-2016, 13:03:00
    #1
    Merhaba,

    Wordpress tabanlı Bir haber sitem var ve buna haber çekmek için bir bot hazırlıyorum. Çekeceğim haber ile birlikte öne çıkarılmış görsel olarak haberin resmini de eklemem gerekli. Bunun için elimde bir fonksiyon var. Bu fonksiyon sayesinde wordpresse resim ekleniyor.
    Bilgim az olduğundan sisteme entegre etmeyi beceremedim.

    Sorunlar;

    1) Resim sunucuma kaydediliyor ama wordpress te ne "Ortam" kısmındaki resimler arasında görünüyor nede konuya öne çıkarılmış görsel olarak ekleniyor.

    2) Fatal error: Cannot redeclare wp_crop_image() (previously declared in /home/xxxxx/public_html/wp-admin/includes/image.php:25) in /home/xxxxx/public_html/wp-admin/includes/image.php on line 63
    Şeklinde hata döndürüyor sayfa

    Fonksiyon bu;
    function wp_resim_ekle( $url, $pid, $bas = null, $ozelalan = null )
    {
        $Rname = "teknoday-".rand(10,1000000);
    	$filename = $Rname.$bas.".jpg"; // $filename değişkenine .jpg değeri atar.
        $filename = remove_accents( $filename ); // remove_accents ne işe yarıyor?
    	if ( function_exists( "mb_strtolower" ) )// function_exists, mb_strtolower komutunun çalışıp çalışmadığını denetliyor.
        {
            $filename = mb_strtolower( $filename, "UTF-8" ); //mb_strtolower değişken içindeki harfleri utf-8 formatında küçük harfe çeviriyor.
        }
    	$filename = utf8_uri_encode( $filename ); // buda yine karakterler ile ilgili birşey.
        $filetype = wp_check_filetype( $url ); //Dosya adı, Dosya türü almak. (bu satırda $url de boş, $filetype ta boş.)
     	extract( $filetype ); //Her anahtarın geçerli bir değişken adı olup olmadığına bakmaktan başka bu değişkenlerin simge tablosundakilerle çakışıp çakışmadığına da bakar.
        if ( !$type )
        {
            $type = "";
        }
    	$upload = wp_upload_bits( $filename, $filetype, @file_get_contents( $url ) ); // gelen veriler ile upload klasöründe dosya oluştur.
    					// file_get_contents() fonksiyonuna sahibiz. İçerisine yazazacağımız ilk parametredeki adrese girip kaynağı bir değişkene yüklememizi ya da ekrana yazdırmamızı sağlar.
    	if ( !empty( $upload['error'] ) )// upload dizisi boş ise
        {
            return "Resim eklenemedi!<br />Hata: ".$upload['error']."<br />"; // ekrana bu hatayı döndür.
        }
        $neyim = $upload['file']; // $neyim değişkeni içinde "/home/flyklmva/public_html/wp-content/uploads/2016/11/teknoday-random-rakam.jpg" var.
        $attachment = array(
            "guid" => $upload['url'], //http://www.teknoday.com/wp-content/uploads/2016/11/teknoday-562726.jpg
            "post_mime_type" => $type, // boş
            "post_title" => $bas, // boş
            "post_content" => "", // boş
            "post_type" => "attachment", // attachment
            "post_parent" => $pid // boş
        );
        require( ABSPATH."wp-admin/includes/image.php" ); // image.php deki kodlarımızı burada require fonksiyonuyla çalıştırıyoruz. ABSPATH sabiti wp’nin kurulum dizinini tanımlıyor.
    	$attach_id = wp_insert_attachment( $attachment, $neyim, $pid ); //Bu fonksiyon medya kütüphanesi içine bir ek ekler. 
       	$attach_data = wp_generate_attachment_metadata( $attach_id, $neyim ); //Bu fonksiyon, bir görüntü eki için meta üretir. Aynı zamanda küçük bir resim ve tanımlanan boyutlarına göre görüntü eki ve diğer ara boyutlarını oluşturur
    	wp_update_attachment_metadata( $attach_id, $attach_data ); // Bir ekin için meta güncellemesi yapar .
       	add_post_meta( $pid, "_thumbnail_id", $attach_id, true ); // Özel alan ekler.
        $nane = $neyim;
        return $nane;
    }
    Ben Şu şekilde kullanmaya çalışıyorum;

    $benim_yazim = array();
      $benim_yazim['post_title'] = $botbaslik;
      $benim_yazim['post_content'] = "<h1>".$botbaslik."</h1><br>"."<h2>".$botTags."</h2><br>".$botmakale;
      $benim_yazim['post_status'] = 'pending';
      $benim_yazim['post_author'] = 1;
      $benim_yazim['post_category'] = $_POST['g_kategori'];
      $benim_yazim['comment_status'] = $_POST['comments'];
      $benim_yazim['page_template'] = $_POST['eet'];
      //$benim_yazim['post_date'] = $bottarih;
      $benim_yazim['post_type'] = $_POST['post_tipi'];
      $benim_yazim['tags_input'] = $content;
    	
        $id = wp_insert_post($benim_yazim);
        wp_resim_ekle($botresim, $id, $slug, 'kucukresim');

    Birde şu $slug değişkeni nerden geliyor bulamadım. sanki boşta duruyor gibi.
  • 10-11-2016, 13:12:48
    #2
    Sorunu mu hala çözemedim.