前边一篇文章介绍了C# WordPressPCL开源项目的功能。本人在实际应用中遇到了一些问题,比如获取及更新文章(Post)自定义字段(Meta)并未成功。 在Github的Issues中未找到直接能用的答案。但是提供了一些思路。需要修改主题函数文件functions.php ,代码如下:
function custom_field_get_post_meta_cb($object, $field_name, $request){
$post_id=$object[‘id’];
$metas = get_post_custom($post_id);
foreach($metas as $key => $value) {
if(sizeof($value) == 1) {
$metas[$key] = $value[0];
}
}
return $metas;
}
function custom_field_update_post_meta_cb($data, $object, $field_name){
$post_id=$object->ID ? $object->ID : ($object->id ? $object->id : $object[‘id’]);
if ($post_id) {
foreach ($data as $key => $value) {
if (!add_post_meta($post_id, $key, $value,true)) {
update_post_meta($post_id, $key, $value);
}
}
}
return true;
}
add_action(‘rest_api_init’, function(){
register_rest_field(‘post’, ‘meta’,
array(‘get_callback’ => ‘custom_field_get_post_meta_cb’,’update_callback’ => ‘custom_field_update_post_meta_cb’));
});
经过单元测试,get / create /update 都暂未发现问题。关于 C# 调用WordPressPCL 更新Post的介绍暂时到这里,如果发现问题的再更新。