2010-04-22 3 views
1

Je veux faire de nouveaux messages sur mon blog à distance avec XMLRPC API et j'essaie d'utiliser la fonction metaWeblog.newPost, car elle fournit plus de fonctionnalités. J'ai ajouté avec succès de nouveaux articles dans WordPress mais je n'ai pas réussi à les poster dans une catégorie définie.Comment utiliser XML-RPC metaWeblog.newPost correctement avec PHP?

J'ai essayé beaucoup de choses différentes mais j'ai échoué. Maintenant, je suis en utilisant le code de this site, après dépouillant le code pour mes besoins voici ce que je suis arrivé et il fonctionne très bien:

remotepost.class.php

<?php 
class remotePost 
{ 
    private $client; 
    private $wpURL = 'http://localhost/wp/xmlrpc.php '; 
    private $ixrPath = '/wp-includes/class-IXR.php'; 
    private $uname = 'zxc'; 
    private $pass = 'zxc'; 
    public $postID; 
    function __construct($content) 
    { 
     if(!is_array($content)) throw new Exception('Invalid Argument'); 
     include $this->ixrPath; 
     $this->client = new IXR_Client($this->wpURL); 

     $this->postID = $this->postContent($content); 
    } 
    private function postContent($content) 
    { 
     $content['description'] = $content['description']; 
     if(!$this->client->query('metaWeblog.newPost','',$this->uname,$this->pass,$content,true)) throw new Exception($this->client->getErrorMessage()); 
     return $this->client->getResponse(); 
    } 
} 
?> 

post.php (vous pouvez le nommer tout ce que vous voulez)

<?php 
if(isset($_POST['submit'])) 
{ 
    include "remotepost.class.php"; 
    $content['title'] = $_POST['title']; 
    $content['categories'] = $_POST['category']; 
    $content['description'] = $_POST['description']; 
    try 
    { 
     $posted = new remotePost($content); 
     $pid = $posted->postID; 
    } 
    catch(Exception $e) 
    { 
     echo $e->getMessage(); 
    } 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>WordPress Poster</title> 
</head> 
<body> 
<?php 
    if(isset($_POST['submit'])) 
     echo "Posted! <a href=\"http://localhost/wp/?p=$pid\">View Post</a><br /><br />"; 
?> 
    <form enctype="multipart/form-data" method="post" action="#"> 
     Title <input type="text" name="title" /> <br /> 
     Category <input type="text" name="category" /> <br /> 
     Description <input type="text" name="description" /> <br /> 
     <input type="submit" value="Submit" name="submit" /> 
    </form> 
</body> 
</html> 

Pourquoi ce code ne fournit pas de dans le répertoire droite (catégories)?

Répondre

2
include "remotepost.class.php"; 
$content['title'] = $_POST['title']; 
$content['categories'] = $_POST['category']; 
$content['description'] = $_POST['description']; 

changements à

$content['categories'] = array($_POST['category']); 

Il doit être un tableau, il a pris ma toute la nuit, je suppose que j'ai lu plus de 200 pages pour ce lol, gooooogled