<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
    <title></title>
  </head>

  <body>
    <p style="margin: 0px;">OK, now I understand what you&#39;re doing.</p>

    <p style="margin: 0px;">&#160;</p>

    <p style="margin: 0px;">When I first started working with WordPress and XMLRPC, I tried building my own library ... it was taking a long time, and I ran into many of the issues you&#39;re running in to now.&#160; Someone suggested I use the built-in IXR library instead, and it made all the difference.</p>

    <p style="margin: 0px;">&#160;</p>

    <p style="margin: 0px;">Here&#39;s a simple example:</p>

    <p style="margin: 0px;">&#160;</p>

    <p style="margin: 0px;">include_once(ABSPATH . WPINC . &#39;/class-IXR.php&#39;);</p>

    <p style="margin: 0px;">&#160;</p>

    <p style="margin: 0px;">$client = new IXR_Client(&#39;destinantion_url&#39;);</p>

    <p style="margin: 0px;">&#160;</p>

    <p style="margin: 0px;">$client-&gt;query(&#39;procedure.name&#39;, &#39;arg1&#39;, &#39;arg2&#39;, &#39;arg3&#39;, ...);</p>

    <p style="margin: 0px;">&#160;</p>

    <p style="margin: 0px;">$response = $client-&gt;getResponse();</p>

    <p style="margin: 0px;">&#160;</p>

    <p style="margin: 0px;">That will load the library, create a new client pointing at whatever WP installation you&#39;re working with, execute your remote procedure, and store the response (errors, data, or whatever) in the $response variable.</p>

    <p style="margin: 0px;">&#160;</p>

    <p>&#160;</p>

    <div style="margin: 5px 0px 5px 0px; font-family: monospace;">
      On June 15, 2010 at 6:51 PM Tim Golen &lt;tim@golen.net&gt; wrote:<br />
      <br />
      &gt; Hi Joseph,<br />
      &gt;<br />
      &gt; Right on, that&#39;s exactly what I needed to know.<br />
      &gt;<br />
      &gt; I&#39;ve been using http://devzone.zend.com/article/1307 for the XML-RPC (lower<br />
      &gt; level) API, and then building my own PHP library on top of that (with the<br />
      &gt; Wordpress functions). I&#39;ll go and check out the IXR library to see if that<br />
      &gt; helps.<br />
      &gt;<br />
      &gt; All of the calls that I am making that pull data from Wordpress are working<br />
      &gt; fine. It&#39;s just when trying to create data (wp.newComment, wp.newCategory,<br />
      &gt; metaWeblog.newPost) they are all giving me similar data errors:<br />
      &gt;<br />
      &gt; Sorry, the new category failed.<br />
      &gt;<br />
      &gt; Invalid Data: Please go back and try again.<br />
      &gt;<br />
      &gt; Content, title, and excerpt are empty.<br />
      &gt;<br />
      &gt; I&#39;ve been debugging the thing to death and still can&#39;t get any closer. I<br />
      &gt; have a feeling that it has something to do with how the struct datatypes are<br />
      &gt; being encoded in the XML-RPC portion. Here is a sample of my code:<br />
      &gt;<br />
      &gt;<br />
      &gt; $this-&gt;makeRequest(<br />
      &gt; &#39;wp.newComment&#39;,<br />
      &gt; array(<br />
      &gt; new xmlrpcval($blogId),<br />
      &gt; new xmlrpcval($this-&gt;username),<br />
      &gt; new xmlrpcval($this-&gt;password),<br />
      &gt; new xmlrpcval($postId),<br />
      &gt; xmlrpc_encode(array(<br />
      &gt; &#39;comment_parent&#39;=&gt;intval(0),<br />
      &gt; &#39;content&#39;=&gt;strval($comment-&gt;content),<br />
      &gt; &#39;author&#39;=&gt;strval($comment-&gt;author),<br />
      &gt; &#39;author_url&#39;=&gt;strval($comment-&gt;author_url),<br />
      &gt; &#39;author_email&#39;=&gt;strval($comment-&gt;author_email)<br />
      &gt; )),<br />
      &gt; ));<br />
      &gt;<br />
      &gt; The structure containing the comment information ends up being encoded to<br />
      &gt; this:<br />
      &gt;<br />
      &gt; &lt;params&gt;<br />
      &gt; &lt;param&gt;<br />
      &gt;&#160; &lt;value&gt;<br />
      &gt;&#160; &#160;&lt;struct&gt;<br />
      &gt;&#160; &#160; &lt;member&gt;<br />
      &gt;&#160; &#160; &#160;&lt;name&gt;comment_parent&lt;/name&gt;<br />
      &gt;&#160; &#160; &#160;&lt;value&gt;<br />
      &gt;&#160; &#160; &#160; &lt;int&gt;0&lt;/int&gt;<br />
      &gt;<br />
      &gt;&#160; &#160; &#160;&lt;/value&gt;<br />
      &gt;&#160; &#160; &lt;/member&gt;<br />
      &gt;&#160; &#160; &lt;member&gt;<br />
      &gt;&#160; &#160; &#160;&lt;name&gt;content&lt;/name&gt;<br />
      &gt;&#160; &#160; &#160;&lt;value&gt;<br />
      &gt;&#160; &#160; &#160; &lt;string&gt;comment&lt;/string&gt;<br />
      &gt;&#160; &#160; &#160;&lt;/value&gt;<br />
      &gt;&#160; &#160; &lt;/member&gt;<br />
      &gt;<br />
      &gt;&#160; &#160; &lt;member&gt;<br />
      &gt;&#160; &#160; &#160;&lt;name&gt;author&lt;/name&gt;<br />
      &gt;&#160; &#160; &#160;&lt;value&gt;<br />
      &gt;&#160; &#160; &#160; &lt;string&gt;Tim&lt;/string&gt;<br />
      &gt;&#160; &#160; &#160;&lt;/value&gt;<br />
      &gt;&#160; &#160; &lt;/member&gt;<br />
      &gt;&#160; &#160; &lt;member&gt;<br />
      &gt;&#160; &#160; &#160;&lt;name&gt;author_url&lt;/name&gt;<br />
      &gt;<br />
      &gt;&#160; &#160; &#160;&lt;value&gt;<br />
      &gt;&#160; &#160; &#160; &lt;string&gt;http://www.golen.net/blog&lt;/string&gt;<br />
      &gt;&#160; &#160; &#160;&lt;/value&gt;<br />
      &gt;&#160; &#160; &lt;/member&gt;<br />
      &gt;&#160; &#160; &lt;member&gt;<br />
      &gt;&#160; &#160; &#160;&lt;name&gt;author_email&lt;/name&gt;<br />
      &gt;&#160; &#160; &#160;&lt;value&gt;<br />
      &gt;&#160; &#160; &#160; &lt;string&gt;tim@golen.net&lt;/string&gt;<br />
      &gt;<br />
      &gt;&#160; &#160; &#160;&lt;/value&gt;<br />
      &gt;&#160; &#160; &lt;/member&gt;<br />
      &gt;&#160; &#160;&lt;/struct&gt;<br />
      &gt;&#160; &lt;/value&gt;<br />
      &gt; &lt;/param&gt;<br />
      &gt; &lt;/params&gt;<br />
      &gt;<br />
      &gt;<br />
      &gt; And all that is encoded the way they discuss it at<br />
      &gt; http://devzone.zend.com/article/1307. I&#39;ll take a look at the IXR library<br />
      &gt; and see if that does any better of a job. I appreciate all of your help and<br />
      &gt; suggestions with this! Once I get the PHP library built, I think it would be<br />
      &gt; an invaluable resource to post on the Wordpress site somewhere.<br />
      &gt;<br />
      &gt; Tim<br />
      &gt;<br />
      &gt; On Tue, Jun 15, 2010 at 12:37 PM, Joseph Scott &lt;joseph@josephscott.org&gt;wrote:<br />
      &gt;<br />
      &gt; &gt; There are 2 different &quot;levels&quot; of libraries for the the WP XML-RPC<br />
      &gt; &gt; APIs.&#160; First, lower level XML-RPC only APIs.&#160; These take care of all<br />
      &gt; &gt; the XML-RPC work, but don&#39;t know anything about the specific methods<br />
      &gt; &gt; that WordPress provides.&#160; For that layer I recommend the PHP IXR<br />
      &gt; &gt; library, which is what WordPress uses.<br />
      &gt; &gt;<br />
      &gt; &gt; The next level up are libraries both take care of the XML-RPC details<br />
      &gt; &gt; and know about the various methods that WP exposes.&#160; I&#39;ve seen some<br />
      &gt; &gt; Perl libraries that fit into this category, but I haven&#39;t seen much in<br />
      &gt; &gt; the of PHP ones.<br />
      &gt; &gt;<br />
      &gt; &gt; On Tue, Jun 15, 2010 at 11:51 AM, Tim Golen &lt;tim@golen.net&gt; wrote:<br />
      &gt; &gt; &gt; Is there already an existing PHP library for the Wordpress API? I&#39;m still<br />
      &gt; &gt; &gt; running into problems and don&#39;t need to reinvent the wheel if it&#39;s<br />
      &gt; &gt; already<br />
      &gt; &gt; &gt; been done. The MetaWeblog API mentions a PHP library, but it comes up<br />
      &gt; &gt; with a<br />
      &gt; &gt; &gt; 404 error, and the MetaWeblog site hasn&#39;t been updated since 2003.<br />
      &gt; &gt; &gt; Errors like &quot;Invalid Data: Please go back and try again.&quot; when trying to<br />
      &gt; &gt; do<br />
      &gt; &gt; &gt; something rather simple like create a comment can get really frustrating.<br />
      &gt; &gt;<br />
      &gt; &gt;<br />
      &gt; &gt;<br />
      &gt; &gt; --<br />
      &gt; &gt; Joseph Scott<br />
      &gt; &gt; joseph@josephscott.org<br />
      &gt; &gt; http://josephscott.org/<br />
      &gt; &gt; _______________________________________________<br />
      &gt; &gt; wp-xmlrpc mailing list<br />
      &gt; &gt; wp-xmlrpc@lists.automattic.com<br />
      &gt; &gt; http://lists.automattic.com/mailman/listinfo/wp-xmlrpc<br />
      &gt; &gt;<br />
    </div>
  </body>
</html>