• 28-04-2014, 22:13:31
    #1
    Merhaba,

    XML-RPC kullanmaya çalışıyorum ama şöyle bir sorun var.


    // $veri_cikti[2], $haber[1] ve $haber[3] regex ile diğer siteden çektiğim veriler
    
    $title = $veri_cikti[2];
    $body = strip_tags($haber[1] . " " . $haber[3]);
    
            require('../../wp-includes/class-IXR.php'); 
            $client = new IXR_Client('http://localhost/_wordpress5_v3/xmlrpc.php');
    
            $USER = 'admin';
            $PASS = 'parola';
    
           	$content = array(
    			'title'=>$title,
    			'description'=>$body,
    			'mt_allow_comments'=>0,  // 1 to allow comments
    			'mt_allow_pings'=>0,  // 1 to allow trackbacks
    			'post_type'=>'post',
    			'mt_keywords'=>'test','test 2',
    			'categories'=>array($category)
    		);
    
            if (!$client->query('metaWeblog.newPost','', $USER,$PASS, $content, true))
            {
                die( 'Error while creating a new post' . $client->getErrorCode() ." : ". $client->getErrorMessage());  
            }
            $ID =  $client->getResponse();
    
            if($ID)
            {
                echo 'Post published with ID:#'.$ID;
    
            }
    Üstteki kodu çalıştırdığım zaman, diğer siteden çektiğim verinin sadece başlığı ekleniyor. Yazı içeriği eklenmiyor. Mesela $body = $haber[1] yerine $body = "Yazı içeriği" gibi sabit bir değer girersem sorunsuz olarak içerik ekleniyor. Ama değişkene atadığım zaman olmuyor. $haber[1] boş değil bu arada, sayfanın herhangi bir yerinde yazdırınca sorun olmuyor...

    $baslik = strip_tags($veri_cikti[2]);
    $icerik = strip_tags($haber[1] . " " . $haber[3]);
    
    class XMLRPClientWordPress
    {
    
    	var $XMLRPCURL = "http://localhost/_wordpress5_v3/xmlrpc.php";
    	var $UserName  = "admin";
    	var $PassWord = "parola";
    	
    	// constructor
        public function __construct($xmlrpcurl, $username, $password) 
    	{
            $this->XMLRPCURL = $xmlrpcurl;
    		$this->UserName  = $username;
    		$this->PassWord = $password;
           
        }
    	function send_request($requestname, $params) 
    	{
    		$request = xmlrpc_encode_request($requestname, $params);
    		$ch = curl_init();
    		curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
    		curl_setopt($ch, CURLOPT_URL, $this->XMLRPCURL);
    		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    		curl_setopt($ch, CURLOPT_TIMEOUT, 1);
    		$results = curl_exec($ch);
    		curl_close($ch);
    		return $results;
    	}
    	
    	function create_post($title,$body,$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,  // 1 to allow comments
    			'mt_allow_pings'=>0,  // 1 to allow trackbacks
    			'post_type'=>'post',
    			'mt_keywords'=>$keywords,
    			'categories'=>array($category)
    		);
    		$params = array(0,$this->UserName,$this->PassWord,$content,true);
    		
    		return $this->send_request('metaWeblog.newPost',$params);	
    	}
    }
    
    $objXMLRPClientWordPress = new XMLRPClientWordPress("http://localhost/_wordpress5_v3/xmlrpc.php" , "admin" , "parola");
    
    echo $objXMLRPClientWordPress->create_post($baslik,$icerik,'');
    Bu kodu çalıştırdığım zaman ise hem başlık hem yazı içeriği ekleniyor AMA Türkçe karakterler bozuk oluyor. Karakterleri bir türlü düzeltemedim.

    İki koddan birisini kullanmam lazım ama işin içinden çıkamadım??
  • 28-04-2014, 22:27:24
    #2
    Bunu dene:


    $published = $publishNE; /* 0 - draft, 1 - published */

    $content = array(
    'title'=>$title,
    'description'=>$body,
    'mt_allow_comments'=>0, // 1 to allow comments
    'mt_allow_pings'=>0, // 1 to allow trackbacks
    'post_type'=>'post',
    'mt_keywords'=>$keywords,
    'categories'=>array($category)
    );

    $params = array('', $UserName, $PassWord, $content, $published);
    $this->send_request( 'metaWeblog.newPost', $params );
  • 28-04-2014, 22:53:44
    #3
    $this->send_request( 'metaWeblog.newPost', $params );
    Satırında hata verdi:
    Fatal error: Using $this when not in object context in XXXX
  • 28-04-2014, 23:05:29
    #4
    verdiğim kodu CLASS daki bu fonksiyonun içine koyacaksın..

    function create_post($title,$body,$category,$keywords='',$e ncoding='UTF-8')

    özellikle metaWeblog.newPost 'a dikkat
  • 28-04-2014, 23:37:19
    #5
    Malesef yine olmadı...
  • 30-04-2014, 00:30:43
    #6
    Fikri olan?
  • 24-07-2014, 18:17:13
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    kodların olduğu php sayfasını UTF8 olarak kodlamayı dene, düzelmesi lazım...