Kategoriler
WordPress

WordPress İçin İçerik Botu Yazma Mantığı

Bazen oluşturduğum veri tabanlarındaki içerikleri, bazen de çeşitli sitelerden içerikleri CC BY-ND ve benzeri lisanslar ile yazı olarak WordPress’e aktarmam gerekiyor. Bunun için de doğal olarak içerik botu dediğimiz botları yazmaya ihtiyaç duyuyorum. Bu yazımda, botlar ile çektiğimiz içerikleri WordPress’e nasıl eklediğimizden bahsedeceğim.

Senaryomuz open source bir kaynak olan TMDb’den filmleri çekerek sitemize eklemek olsun. Bunun için file_get_contents() gibi bir fonksiyonla siteye bağlandığımızı CURL fonksiyonu ile de içeriklerimizi çektiğimizi ve değişkenlerimize tanımladığımızı varsayıyorum. Elimizdeki değişkenlerimiz şunlar olsun;

$filmadi
$yonetmen
$filmaciklamasi
$filmturu
$oyuncular

Şimdi bu değişkenlerimizin içeriğini WordPress’e yazı olarak ekleyelim.

Bunun için wp_insert_post fonksiyonundan yararlanacağız. Ancak öncellikle dikkat etmemiz gereken şey, bu fonksiyon ile bir post insert etmeden, yani eklemeden önce eklenecek yazının başlığı, içeriği, kategorisi gibi değişkenleri tanımlamalıyız.

Fonksiyonumuzun varsayılan dizimi şöyle;

$defaults = array(
  'post_status' => 'draft',
  'post_type' => 'post',
  'post_author' => $user_ID,
  'ping_status' => get_option('default_ping_status'),
  'post_parent' => 0,
  'menu_order' => 0,
  'to_ping' =>  '',
  'pinged' => '',
  'post_password' => '',
  'guid' => '',
  'post_content_filtered' => '',
  'post_excerpt' => ''
);

Kullanabileceğimiz parametreler ise şunlar;

$post = array(
  'comment_status' => [ 'closed' | 'open' ] // 'closed' yoruma kapalı.
  'ID' => [  ] //Eğer bu değer varsa ilgili yazı güncellenir.
  'menu_order' => [  ] //Yeni yazı bir sayfa ise menü sırası.
  'page_template => [  ] //Sayfa için şablon belirtir.
  'ping_status' => [ ? ] //Ping durumu?
  'pinged' => [ ? ] //?
  'post_author' => [  ] //Yazarın kullanıcı ID'si.
  'post_category => [ array(, ) ] //Yazı kategorileri.
  'post_content' => [  ] //Yazının içeriği.
  'post_date' => [ Y-m-d H:i:s ] //Yazılma zamanı.
  'post_date_gmt' => [ Y-m-d H:i:s ] //Yazının yerel saatteki yazılma zamanı.
  'post_excerpt' => [  ] //Yazı özeti.
  'post_parent' => [  ] //Yazının bağlı bulunduğu ana sayfası.
  'post_password' => [ ? ] //Yazı için gerekliyse parola.
  'post_status' => [ 'draft' | 'publish' | 'pending' ] //Yeni yazının yayımlanma durumu. Taslak, yayımlanmış, onay bekliyor.
  'post_title' => [  ] //Yazının başlığı.
  'post_type' => [ 'post' | 'page' ] //Yazının türü, yazı, sayfa.
  'tags_input' => [ ', , ' ] //Etiketler.
  'to_ping' => [ ? ] //?
);

Şimdi bu değişkenlerin temel olanlarını kullanarak yazımızı ekleyelim;

$my_post = array();
$my_post['post_title'] = $filmadi[0];
$my_post['post_content'] = $filmaciklamasi[0];
$my_post['post_status'] = 'pending';
$my_post['post_author'] = 1;
$my_post['post_category'] = array(1);
$my_post['tags_input'] = $filmturu[0]. " , " .$oyuncular[0]. " , " .$yonetmen[0];

wp_insert_post( $my_post );

Buraya kadar olan kısım temel, basit bir yazı eklemek. Elbette ki bir film içeriği yukarıdaki gibi düz yazı olarak eklenmez. Mutlaka temamızda yönetmen, oyuncu, filmin türü gibi birçok bilgiyi girdiğimiz özel alanlar vardır. İşte bu alanlara bilgi ekleyebilmek için de add_post_meta ya da update_meta_post fonksiyonlarını kullanabilirsiniz.

Ayrıca en çok sorulan sorulardan birisi de çekilen görsellerin nasıl öne çıkarılmış görsel olarak ayarlanabileceği oluyor. Bunun için de WordPress’in the_post_thumbnail fonksiyonuna ihtiyacınız olacak. Bu fonksiyonla tanımladığınız görsellerin boyutlarını belirlemek için de set_post_thumbnail_size fonksiyonunu kullanabilirsiniz.

Bir Cevap Yazın