Custom fields support for xmlrpc from josephscott. fixes #5148
git-svn-id: http://svn.automattic.com/wordpress/trunk@6418 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
00d334c288
commit
630cd8267c
61
xmlrpc.php
61
xmlrpc.php
|
@ -172,6 +172,49 @@ class wp_xmlrpc_server extends IXR_Server {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function get_custom_fields($post_id) {
|
||||||
|
$post_id = (int) $post_id;
|
||||||
|
|
||||||
|
$custom_fields = array();
|
||||||
|
|
||||||
|
foreach ( (array) has_meta($post_id) as $meta ) {
|
||||||
|
// Don't expose protected fields.
|
||||||
|
if ( strpos($meta['meta_key'], '_wp_') === 0 ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$custom_fields[] = array(
|
||||||
|
"id" => $meta['meta_id'],
|
||||||
|
"key" => $meta['meta_key'],
|
||||||
|
"value" => $meta['meta_value']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $custom_fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_custom_fields($post_id, $fields) {
|
||||||
|
$post_id = (int) $post_id;
|
||||||
|
|
||||||
|
foreach ( (array) $fields as $meta ) {
|
||||||
|
if ( isset($meta['id']) ) {
|
||||||
|
$meta['id'] = (int) $meta['id'];
|
||||||
|
|
||||||
|
if ( isset($meta['key']) ) {
|
||||||
|
update_meta($meta['id'], $meta['key'], $meta['value']);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
delete_meta($meta['id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$_POST['metakeyinput'] = $meta['key'];
|
||||||
|
$_POST['metavalue'] = $meta['value'];
|
||||||
|
add_meta($post_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WordPress XML-RPC API
|
* WordPress XML-RPC API
|
||||||
* wp_getPage
|
* wp_getPage
|
||||||
|
@ -243,7 +286,8 @@ class wp_xmlrpc_server extends IXR_Server {
|
||||||
"wp_page_order" => $page->menu_order,
|
"wp_page_order" => $page->menu_order,
|
||||||
"wp_author_id" => $author->ID,
|
"wp_author_id" => $author->ID,
|
||||||
"wp_author_display_name" => $author->display_name,
|
"wp_author_display_name" => $author->display_name,
|
||||||
"date_created_gmt" => new IXR_Date($page_date_gmt)
|
"date_created_gmt" => new IXR_Date($page_date_gmt),
|
||||||
|
"custom_fields" => $this->get_custom_fields($page_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
return($page_struct);
|
return($page_struct);
|
||||||
|
@ -1112,6 +1156,10 @@ class wp_xmlrpc_server extends IXR_Server {
|
||||||
if (!$post_ID) {
|
if (!$post_ID) {
|
||||||
return new IXR_Error(500, __('Sorry, your entry could not be posted. Something wrong happened.'));
|
return new IXR_Error(500, __('Sorry, your entry could not be posted. Something wrong happened.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( isset($content_struct['custom_fields']) ) {
|
||||||
|
$this->set_custom_fields($post_ID, $content_struct['custom_fields']);
|
||||||
|
}
|
||||||
|
|
||||||
$this->attach_uploads( $post_ID, $post_content );
|
$this->attach_uploads( $post_ID, $post_content );
|
||||||
|
|
||||||
|
@ -1332,6 +1380,11 @@ class wp_xmlrpc_server extends IXR_Server {
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
return new IXR_Error(500, __('Sorry, your entry could not be edited. Something wrong happened.'));
|
return new IXR_Error(500, __('Sorry, your entry could not be edited. Something wrong happened.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( isset($content_struct['custom_fields']) ) {
|
||||||
|
$this->set_custom_fields($post_ID, $content_struct['custom_fields']);
|
||||||
|
}
|
||||||
|
|
||||||
$this->attach_uploads( $ID, $post_content );
|
$this->attach_uploads( $ID, $post_content );
|
||||||
|
|
||||||
logIO('O',"(MW) Edited ! ID: $post_ID");
|
logIO('O',"(MW) Edited ! ID: $post_ID");
|
||||||
|
@ -1404,7 +1457,8 @@ class wp_xmlrpc_server extends IXR_Server {
|
||||||
'wp_author_id' => $author->ID,
|
'wp_author_id' => $author->ID,
|
||||||
'wp_author_display_name' => $author->display_name,
|
'wp_author_display_name' => $author->display_name,
|
||||||
'date_created_gmt' => new IXR_Date($post_date_gmt),
|
'date_created_gmt' => new IXR_Date($post_date_gmt),
|
||||||
'post_status' => $postdata['post_status']
|
'post_status' => $postdata['post_status'],
|
||||||
|
'custom_fields' => $this->get_custom_fields($post_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
return $resp;
|
return $resp;
|
||||||
|
@ -1487,7 +1541,8 @@ class wp_xmlrpc_server extends IXR_Server {
|
||||||
'wp_author_id' => $author->ID,
|
'wp_author_id' => $author->ID,
|
||||||
'wp_author_display_name' => $author->display_name,
|
'wp_author_display_name' => $author->display_name,
|
||||||
'date_created_gmt' => new IXR_Date($post_date_gmt),
|
'date_created_gmt' => new IXR_Date($post_date_gmt),
|
||||||
'post_status' => $entry['post_status']
|
'post_status' => $entry['post_status'],
|
||||||
|
'custom_fields' => $this->get_custom_fields($entry['ID'])
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue