Editing WordPress ?Pages? Via XML-RPC

WordPress’s Pages open the door to using WP as a content management system. Unfortunately, Pages can’t be edited via XML-RPC blogging apps like Ecto. This might be a good thing, but I’m foolhardy enough to try working around it.

Here’s how:

Find a text editor you like and open up the wp-includes/functions-post.php file.

in the wp_get_recent_posts() function, change this:

$sql = ?SELECT * FROM $wpdb->posts WHERE post_status IN ('publish', 'draft', 'private') ORDER BY post_date DESC $limit?;

to this:

$sql = ?SELECT * FROM $wpdb->posts WHERE post_status IN ('publish', 'draft', 'private', 'static') ORDER BY post_date DESC $limit?;

Now, in the wp_update_post() function, look for this block of code:

// Escape data pulled from DB.
$post = add_magic_quotes($post);
extract($post);

and insert this block underneath it:

// XML-RPCs apps can't return ?static? post status,
// so we have to work around it
$page_status = NULL;
if($post_status == ?static?)
$page_status = ?static?;

And follow that up by looking for this block:

// Now overwrite any changed values being passed in. These are
// already escaped.
extract($postarr);

and insert this block underneath it:

// set post_status static if this is a page
if($page_status)
$post_status = $page_status;

Fair warning: this works in my limited testing, but don’t blame me if you try it and it breaks something. You’d be a fool to mess with this on a live install, so don’t.

tags: , , , , , , , , , , , , , , , ,

11 Comments

  1. MaestroJAL
    Posted December 12, 2005 at 5:26 pm | Permalink

    So it seems this works fairly well. Except now my pages never finish loading. The page looks complete and according to my browser’s activity window, everything is loaded except the page itself. For instance it reads “13.5KB out of ?”. Any ideas?

  2. Sammy
    Posted January 27, 2006 at 1:11 am | Permalink

    Anyone try this with WP2? I’m interested in trying it but that’s an awful lot of mucking around in core files so I’d rather someone else be the guinea pig. ;)

  3. Sammy
    Posted January 27, 2006 at 1:20 am | Permalink

    Alrighty. No go with my install of WP2 and Marsedit. I’d try ecto but I think I used up my trial last year (never got around to actually do a blog)… But it was an XML-RPC error that Marsedit threw, so I’m reasonably sure it’s not unique to the program.

  4. MaestroJAL
    Posted March 2, 2006 at 12:51 pm | Permalink

    It works a little with ecto and WP 2.0.1. I have to create a blank page in the admin panel, then I can edit it with ecto. This, at least, allows me to update pages quickly once they’re made. However, I have noticed that on some servers, my pages will hang the server’s php for a while if I edit a page too many times. Don’t know what’s up with that.

  5. Jochem
    Posted March 25, 2006 at 1:42 pm | Permalink

    Is it possible to post a working file with the version numers of WordPress and Ecto.

    [tags]Ecto, WordPress Pages,[/tags]

  6. Jochem
    Posted March 25, 2006 at 1:42 pm | Permalink

    Is it possible to post a working file with the version numers of WordPress and Ecto.

    [tags]Ecto, WordPress Pages[/tags]

  7. Posted November 23, 2006 at 9:10 am | Permalink

    Hey, I just got this working with WP 2.0.4 and BlogsInHand. I had trouble figuring out where to put the last block, as the original text is not there AFAICS. I put it in the wp_update_post() function after the block starting:

    // Drafts shouldn’t be assigned a date unless explicitly done so by the user

    as well as in the wp_insert_post function (first function) after the line:

    extract($postarr);

    and one of these options worked. I also edited the first block to read as follows:

    $sql = “SELECT * FROM $wpdb->posts WHERE post_status IN (’publish’, ‘draft’, ‘private’, ’static’) ORDER BY post_status DESC, post_date DESC $limit”;

    This puts the *pages* at the top of the list in BlogsInHand, so they are always available for editing.

    I really didn’t know what I was doing, and am surprised this worked so well, but so far so good. Thanks for your great script! This perfected my pocket pc blogging experience.

  8. Posted February 18, 2007 at 12:53 pm | Permalink

    There’s a pretty easy workaround with Ecto. Just make a post as normal, upload any pictures from the pic editing sheet, and then copy the html.
    You can then just paste it into a page.

    It’s quick enough, and you get all the custom html templates you may be using.

    I understand direct posting is easier, but for the amount of pages I actually creat or edit it’s quicker for me to do ti this way than to remember to re-hack all my php files with each Wordpress update.

    Hope this helps!

    [tags]wordpress hacks ecto[/tags]

  9. Posted February 18, 2007 at 6:03 pm | Permalink

    Sadly, this appears to now be broken with the latest version(s) of WP (2.0.6) and/or Ecto (2.4.2). When I try to refresh the posts in Ecto, I get an error in the Console log complaining about the first block change (’$sql = â??SELECT…’).

    If anyone is able to find a workaround for this bugaboo, I’m definitely interested.

  10. Posted September 30, 2007 at 9:34 am | Permalink

    It is what I was looking for. Thank you for the post

  11. Posted December 11, 2007 at 8:31 am | Permalink

    How to upload XML blog to WordPress. Where can I find the XML Format?

6 Trackbacks/Pingbacks

  1. [...] Editing WordPress â??Pagesâ? Via XML-RPC « MaisonBisson.com: WordPressâ??s Pages open the door to using WP as a content management system. Unfortunately, Pages canâ??t be edited via XML-RPC blogging apps like Ecto. This might be a good thing, but Iâ??m foolhardy enough to try working around it. [...]

  2. [...] Quick and dirty code hacking howto on the great MaisonBisson blog (now added to my regular reading list) [...]

  3. [...] this is also deliciously interesting - the use of an external client for blogging? man, i dont even want to start thinking about that. [...]

  4. [...] final coup was finding a lead on the MaisonBisson blog that would allow contributors to use existing applications like ecto, MarsEdit, or Contribute [...]

  5. [...] version includes widgets (by default), some XML-RPC hooks to edit pages (so you don’t need my hacks), a switch to jQuery from Scriptaculous (Matty got me excited about this), full Atom support [...]

  6. [...] There are two solutions out there. One is to modify the core WordPress files, specifically wp-includes/functions-post.php. [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*

 

User contributed tags for this post:

wordpress xmlrpc (429) - wordpress rpc (259) - xmlrpc wordpress (256) - xml rpc wordpress (238) - wordpress xml rpc (199) - wordpress pages (112) - ecto wordpress (51) - editing wordpress (48) - rpc wordpress (44) - wordpress xml (43) - ecto wordpress pages (41) - googleearth com (38) - wordpress ecto (36) - wordpress private (36) - marsedit wordpress pages (32) - wordpress rpc url (31) - googleearth (30) - wordpress private pages (24) - wordpress post status (24) - editing wordpress pages (23) - Edit Wordpress (23) - XML RPC wordpress com (23) - edit wordpress pages (22) - www rpc tv com (18) - wordpress post via xmlrpc (17) - wordpress xmlrpc login (16) - wordpress xml rpc api (16) - 98 (14) - XML in Wordpress (14) - wordpress com XML RPC (14) - Using php to post to a WordPress blog via XML RPC (14) - wordpress xmlrpc howto (14) - how to edit wordpress (13) - wordpress pages edit (13) - wordpress and xml (13) - jquery xml rpc (13) - using xmlrpc wordpress (12) - xml rpc for wordpress (12) - wordpress wp_insert_post (12) - ecto wordpress com (12) - ecto wordpress api (12) - wordpress com hacks (12) - wordpress xmlrpc post (12) - hack wordpress com (11) - how to edit wordpress pages (11) - wordpress rpc post (11) - marsedit wordpress (11) - php in wordpress pages (10) - wordpress sql edit (10) - style xmlrpc wordpress (10) - jQuery rpc (10) - rpc url wordpress (10) - wordpress api xmlrpc example script (9) - wordpress, post status static (9) - wordpress com xmlrpc (9) - xmlrpc hack (9) - word blogg CMS (9) - php xmlrpc wordpress (9) - wordpress xmlrpc error (9) - xml rpc editing (8) - wordpress Draft pages Private Pages (8) - ecto wordpress page (8) - ecto pages (8) - wordpress page draft (8) - wordpress blog client update pages (8) - jquery xmlrpc (8) - F (8) - wp_update_post( ) (8) - wordpress 2 5 xmlrpc changes (8) - wordpress xmlrpc how to (7) - post to wordpress with xmlrpc (7) - PRIVATE SEXS (7) - post to wordpress xmlrpc (7) - wordpress posting on pages (7) - XML RPC on wordpress (7) - xmlrpc wordpress post (7) - wordpress xmlrpc api (7) - wordpress post on pages (7) - post wordpress xmlrpc (7) - wordpress hack xmlrpc (7) - wordpress xml rpc error (7) - wordpress post rpc (7) - wordpress insert xml in pages (7) - hacking wordpress page (7) - wordpress xml functions (7) - wordpress xml rpc php (7) - wordpress xml-rpc post (6) - wordpress XML-RPC (6) - xmlrpc for wordpress (6) - hacking wordpress (6) - how to block googleearth (6) - editing wordpress template (6) - wordpress xmlrpc pages (6) - google earth log n status (6) - wordpress how to post via xmlrpc using php (6) - hacking wordpress com (6) - word press ecto (6) - xml in wordpress pages (6) - wordpress ecto api (6) - php post to wordpress XMLRPC (6) - Posting to a Wordpress Blog Via XMLRPC (6) - wordpress static publish post status (6) - using wordpress xmlrpc (6) - xml rpc wordpress post (6) - word press xmlrpc (6) - log n here com (6) - wordpress page management (6) - php xml rpc wordpress (6) - wordpress pages management (6) - wordpress inserting php pages (6) - wordpress blog posting xml rpc (6) - wordpress client pages (6) - xmlrpc wordpress php (6) - wordpress xmlrpc file (6) - wordpress xml reader (6) - wordpress api howto (6) - wordpress xmlrpc tutorial (6) - time passing quote (5) - wordpress xmlrpc example (5) - wordpress xmlrpc tags (5) - post to wordpress via xmlrpc (5) - edit wordpress xml (5) - wordpress rpc pages (5) - wordpress xml rpc page (5) - wordpress where is xmlrpc (5) - xml rpc post wordpress (5) - hack xmlrpc (5) - wordpress pages private (5) - php wordpress pages (5) - xml rpc in wordpress (5) - edit wordpress page (5) - wordpress xml rpc post (5) - XML RPC blogging (5) - wordpress posting pages xml (5) - ecto wordpress how (5) - wordpress draft pages (5) - xml rpc post (5) - php wordpress xmlrpc (5) - php wordpress xml rpc (5) - ecto wordpress howto (5) - wordpress xml API php (5) - ecto edit pages (5) - marsedit wordpress rpc (5) - wordpress extract pages (5) - wordpress post xmlrpc (5) - pages in wordpress (5) - wordpress com rpc xml howto (5) - wordpress edit pages html (5) - wordpress insert pages through sql (5) - wordpress pages draft default (5) -