Need help with WordPress plugin development for AI content creation
I’m working on a WordPress extension that takes user input from a contact form and uses it to generate articles through ChatGPT API. The plugin should grab form data, send it to the AI service, and display the generated content back to the user.
I’m new to WordPress plugin development and I’ve put together some code but I’m running into issues. When users click the generate button, nothing appears and the browser console shows “content: null” from the API response.
Here’s what I have so far:
content-creator.php
/*
Plugin Name: Smart Content Creator
Description: Creates articles using AI technology
Version: 1.0
Author: developer123
*/
// API configuration
define('AI_SERVICE_KEY', 'your_api_key_here');
define('AI_SERVICE_ENDPOINT', 'https://api.openai.com/v1/engines');
// Create shortcode for form display
add_shortcode('smart_content_form', 'display_content_form');
function display_content_form() {
error_log("Form shortcode loaded");
ob_start();
?>
<div class="content-creator-wrapper">
<?php echo do_shortcode('[contact-form-7 id="15" title="Article Request"]'); ?>
</div>
<?php
return ob_get_clean();
}
// Setup REST API endpoint
add_action('rest_api_init', 'setup_content_endpoint');
function setup_content_endpoint() {
error_log("Setting up API endpoint");
register_rest_route('content-creator/v1', '/create-article', array(
'methods' => 'POST',
'callback' => 'handle_content_creation',
));
}
// Process content generation request
function handle_content_creation($request) {
error_log("Content creation started");
$input = $request->get_params();
// Extract form values
$subject = sanitize_text_field($input['article_subject']);
$tone = sanitize_text_field($input['content_tone']);
$summary = sanitize_textarea_field($input['brief_summary']);
error_log("Parameters: Subject: " . $subject . ", Tone: " . $tone . ", Summary: " . $summary);
// Create AI prompt
$ai_prompt = "Article subject: $subject\nContent tone: $tone\nBrief: $summary\nCreate article:";
error_log("AI Prompt: " . $ai_prompt);
// Configure API call
$request_data = array(
'prompt' => $ai_prompt,
'temperature' => 0.7,
'max_tokens' => 800,
'n' => 1,
);
$http_args = array(
'headers' => array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . AI_SERVICE_KEY,
),
'body' => json_encode($request_data),
'timeout' => 45,
);
// Make API call
error_log("Making API request...");
$api_response = wp_remote_post(AI_SERVICE_ENDPOINT . '/text-davinci-003/completions', $http_args);
error_log("API call completed");
// Handle response
if (is_wp_error($api_response)) {
$error_msg = $api_response->get_error_message();
error_log("API failed: " . $error_msg);
return new WP_Error('request_failed', $error_msg, array('status' => 500));
} else {
$response_body = wp_remote_retrieve_body($api_response);
$parsed_json = json_decode($response_body, true);
$generated_content = $parsed_json['choices'][0]['text'];
error_log("Generated content: " . $generated_content);
return array('content' => $generated_content);
}
}
content-creator.js
jQuery(document).ready(function($) {
$('#create-content').on('submit', function(e) {
e.preventDefault();
console.log('Content creation form submitted');
// Collect form information
var requestData = $(this).serialize();
console.log('Request data:', requestData);
// Make AJAX call
$.ajax({
url: content_creator_settings.api_endpoint,
method: 'POST',
data: requestData,
beforeSend: function(xhr) {
xhr.setRequestHeader('X-WP-Nonce', content_creator_settings.security_nonce);
},
success: function(data) {
console.log('Success response:', data);
var generated_text = data.content;
if (generated_text) {
console.log('Content generated:', generated_text);
$('#article-output').html(generated_text);
} else {
console.log('No content returned');
$('#article-output').html('No content was generated');
}
},
error: function(xhr, status, error) {
console.log('Request failed:', xhr.responseText);
$('#article-output').html('Request failed: ' + xhr.responseText);
}
});
});
});