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)?