Thanks Eric! How did you handle the areguments with struct datatypes like for creating a new category? Do you just pass in a array with key=&gt;val pairs or do you have to do special encoding?<div><br></div><div>Tim<br><br>
<div class="gmail_quote">On Tue, Jun 15, 2010 at 1:06 PM, <a href="mailto:eric@eamann.com">eric@eamann.com</a> <span dir="ltr">&lt;<a href="mailto:eric@eamann.com">eric@eamann.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">



  
    
    
  

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

    <p style="margin:0px"> </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.  Someone suggested I use the built-in IXR library instead, and it made all the difference.</p>


    <p style="margin:0px"> </p>

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

    <p style="margin:0px"> </p>

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

    <p style="margin:0px"> </p>

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

    <p style="margin:0px"> </p>

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

    <p style="margin:0px"> </p>

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

    <p style="margin:0px"> </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>
<div><div></div><div class="h5">

    <p style="margin:0px"> </p>

    <p> </p>

    <div style="margin:5px 0px 5px 0px;font-family:monospace">
      On June 15, 2010 at 6:51 PM Tim Golen &lt;<a href="mailto:tim@golen.net" target="_blank">tim@golen.net</a>&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 <a href="http://devzone.zend.com/article/1307" target="_blank">http://devzone.zend.com/article/1307</a> 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;  &lt;value&gt;<br>
      &gt;   &lt;struct&gt;<br>
      &gt;    &lt;member&gt;<br>
      &gt;     &lt;name&gt;comment_parent&lt;/name&gt;<br>
      &gt;     &lt;value&gt;<br>
      &gt;      &lt;int&gt;0&lt;/int&gt;<br>
      &gt;<br>
      &gt;     &lt;/value&gt;<br>
      &gt;    &lt;/member&gt;<br>
      &gt;    &lt;member&gt;<br>
      &gt;     &lt;name&gt;content&lt;/name&gt;<br>
      &gt;     &lt;value&gt;<br>
      &gt;      &lt;string&gt;comment&lt;/string&gt;<br>
      &gt;     &lt;/value&gt;<br>
      &gt;    &lt;/member&gt;<br>
      &gt;<br>
      &gt;    &lt;member&gt;<br>
      &gt;     &lt;name&gt;author&lt;/name&gt;<br>
      &gt;     &lt;value&gt;<br>
      &gt;      &lt;string&gt;Tim&lt;/string&gt;<br>
      &gt;     &lt;/value&gt;<br>
      &gt;    &lt;/member&gt;<br>
      &gt;    &lt;member&gt;<br>
      &gt;     &lt;name&gt;author_url&lt;/name&gt;<br>
      &gt;<br>
      &gt;     &lt;value&gt;<br>
      &gt;      &lt;string&gt;<a href="http://www.golen.net/blog" target="_blank">http://www.golen.net/blog</a>&lt;/string&gt;<br>
      &gt;     &lt;/value&gt;<br>
      &gt;    &lt;/member&gt;<br>
      &gt;    &lt;member&gt;<br>
      &gt;     &lt;name&gt;author_email&lt;/name&gt;<br>
      &gt;     &lt;value&gt;<br>
      &gt;      &lt;string&gt;<a href="mailto:tim@golen.net" target="_blank">tim@golen.net</a>&lt;/string&gt;<br>
      &gt;<br>
      &gt;     &lt;/value&gt;<br>
      &gt;    &lt;/member&gt;<br>
      &gt;   &lt;/struct&gt;<br>
      &gt;  &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; <a href="http://devzone.zend.com/article/1307" target="_blank">http://devzone.zend.com/article/1307</a>. 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;<a href="mailto:joseph@josephscott.org" target="_blank">joseph@josephscott.org</a>&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.  First, lower level XML-RPC only APIs.  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.  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.  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;<a href="mailto:tim@golen.net" target="_blank">tim@golen.net</a>&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; <a href="mailto:joseph@josephscott.org" target="_blank">joseph@josephscott.org</a><br>
      &gt; &gt; <a href="http://josephscott.org/" target="_blank">http://josephscott.org/</a><br>
      &gt; &gt; _______________________________________________<br>
      &gt; &gt; wp-xmlrpc mailing list<br>
      &gt; &gt; <a href="mailto:wp-xmlrpc@lists.automattic.com" target="_blank">wp-xmlrpc@lists.automattic.com</a><br>
      &gt; &gt; <a href="http://lists.automattic.com/mailman/listinfo/wp-xmlrpc" target="_blank">http://lists.automattic.com/mailman/listinfo/wp-xmlrpc</a><br>
      &gt; &gt;<br>
    </div>
  </div></div></div>

<br>_______________________________________________<br>
wp-xmlrpc mailing list<br>
<a href="mailto:wp-xmlrpc@lists.automattic.com">wp-xmlrpc@lists.automattic.com</a><br>
<a href="http://lists.automattic.com/mailman/listinfo/wp-xmlrpc" target="_blank">http://lists.automattic.com/mailman/listinfo/wp-xmlrpc</a><br>
<br></blockquote></div><br></div>