'POST', 'callback' => 'aicont_generate_content_posts_api', 'permission_callback' => function() { return current_user_can('edit_posts'); }, 'args' => [ 'keyword' => ['required' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field'], 'post_id' => ['required' => true, 'type' => 'integer', 'sanitize_callback' => 'absint'], 'api_key' => ['required' => false, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field'], 'site_language' => ['required' => false, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field'], 'site_title' => ['required' => false, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field'], 'prompt' => ['required' => false, 'type' => 'string', 'sanitize_callback' => 'sanitize_textarea_field'], ] ]); }); function aicont_generate_content_posts_api($request) { global $aicont_site_language, $aicont_site_title; $keyword = $request->get_param('keyword'); $post_id = $request->get_param('post_id'); $api_key = $request->get_param('api_key'); $site_language = $request->get_param('site_language') ?: $aicont_site_language; $site_title = $request->get_param('site_title') ?: $aicont_site_title; $prompt = $request->get_param('prompt'); if (empty($keyword)) return new WP_REST_Response(['success' => false, 'error_code' => 'err_keyword_empty'], 400); if (empty($post_id)) return new WP_REST_Response(['success' => false, 'error_code' => 'err_post_id_invalid'], 400); $post = get_post($post_id); if (!$post) return new WP_REST_Response(['success' => false, 'error_code' => 'err_post_not_found'], 404); $client_site_url = home_url('', 'https'); if (empty($client_site_url)) return new WP_REST_Response(['success' => false, 'error_code' => 'err_site_url'], 500); $server_url = 'https://webtinus.com/wp-json/aicont/v1/generate_contentPosts'; $body = wp_json_encode([ 'keyword' => $keyword, 'post_id' => $post_id, 'prompt' => $prompt, 'api_key' => $api_key, 'client_site_url' => $client_site_url, 'site_title' => $site_title, 'site_language' => $site_language ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $response = wp_remote_post($server_url, [ 'headers' => ['Content-Type' => 'application/json', 'X-Client-Site' => $client_site_url], 'body' => $body, 'timeout' => 120, 'sslverify' => true ]); if (is_wp_error($response)) { return new WP_REST_Response(['success' => false, 'error_code' => 'err_connection_failed'], 500); } $status_code = wp_remote_retrieve_response_code($response); $body = wp_remote_retrieve_body($response); $data = json_decode($body, true); if ($status_code !== 200 || !isset($data['success'])) { $code = $data['error_code'] ?? 'err_server_error'; return new WP_REST_Response(['success' => false, 'error_code' => $code], $status_code); } if (!$data['success'] || empty($data['content'])) { return new WP_REST_Response(['success' => false, 'error_code' => $data['error_code'] ?? 'err_content_empty'], 500); } return new WP_REST_Response([ 'success' => true, 'message_code' => 'success_content_generated', 'content' => trim($data['content']) ], 200); }