function hermes_update_from_file_handler($request) { $id = intval($request->get_param('id')); if ($id <= 0) return new WP_Error('missing_id', 'Post ID required', array('status'=>400)); $file = basename(sanitize_file_name($request->get_param('file'))); $status = sanitize_text_field($request->get_param('status')) ?: 'publish'; $slug = sanitize_title($request->get_param('slug')); $upload_dir = wp_upload_dir(); $file_path = $upload_dir['basedir'].'/hermes-temp/'.$file; if (!file_exists($file_path)) return new WP_Error('file_not_found', 'File: '.$file_path, array('status'=>404)); $content = file_get_contents($file_path); $post_data = array('ID'=>$id,'post_content'=>$content,'post_status'=>$status,'post_author'=>1); if (!empty($slug)) $post_data['post_name'] = $slug; $post_id = wp_update_post($post_data, true); if (is_wp_error($post_id)) return new WP_Error('update_failed', $post_id->get_error_message(), array('status'=>500)); @unlink($file_path); return array('id'=>$post_id,'link'=>get_permalink($post_id),'status'=>$status); }