WordPress’e yazı göndermek için türlü masaüstü uygulamaları görmüşsünüzdür, örneğin Windows Live Writer. Bu sistemlerin hepsi WordPress’in XML-RPC protokolünü kullanırlar. Yani bu sistemle uzaktan yazı ekleme işlemi yapabilirsiniz. Peki bu protokolü php ile nasıl kullanırız?
İşte bu fonksiyonla, işleminizi gayet kolayca halledebiliyorsunuz:
function wpPostXMLRPC($title,$body,$rpcurl,$username,$password,$category,$keywords='',$encoding='UTF-8') {
$title = htmlentities($title,ENT_NOQUOTES,$encoding);
$keywords = htmlentities($keywords,ENT_NOQUOTES,$encoding);
$content = array(
'title'=>$title,
'description'=>$body,
'mt_allow_comments'=>0, // yorumlara izin verilecekse 1 yapın
'mt_allow_pings'=>0, // geri izlemelere izin verilecekse 1 yapın
'post_type'=>'post',
'mt_keywords'=>$keywords,
'categories'=>array($category)
);
$params = array(0,$username,$password,$content,true);
$request = xmlrpc_encode_request('metaWeblog.newPost',$params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_URL, $rpcurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
$results = curl_exec($ch);
curl_close($ch);
return $results;
}
$title = Yazının başlığı
$body = Yazı metni
$rpcurl = Sitenizin xmlrpc adresi (yani: http://www.siteadi.com/xmlrpc.php)
$username = Siteye giriş kullanıcı adı (admin)
$password = Siteye giriş şifreniz
$category = Yazının ekleneceği kategori yada kategoriler
$keywords = Yazının etiketleri
$encoding = Yazının charset ayarı
Yukarıdaki fonksiyonu herhangi bir php scriptle kullanabilirsiniz. Tabi kullanmadan önce, sunucunuzda xmlrpc bileşenlerinin kurulu olduğundan emin olun. Eğer kurulu değilse, xmlrpc_encode_request fonksiyonu hata verecektir.
XMLRPC bileşenleri kurulu olduğu halde yazı eklenmiyorsa:
wp-admin > ayarlar > yazma sayfasından, XML-RPC protokolü ile yazı yayınlamayı aktif hale getirmeniz gerekmektedir.
İşte bu da WordPress’in güzelliklerinden biri :)