WordPress Custom API End Point Generator

How to use the prompts below? – Watch the video below to learn how to use the resources below to get the best results in your work.

Create a WordPress PHP function that registers a custom REST API endpoint. Use the following details to customize the function:

1. **REST API Prefix**: Use the prefix `[YOUR_PREFIX]` for the custom REST API URL. Replace `[YOUR_PREFIX]` with the desired prefix for the API endpoint.
2. **API Version**: Set the version of the API to `[YOUR_VERSION]`.
3. **Endpoint Name**: Define the endpoint as `[YOUR_ENDPOINT]`.
4. **Callback Function**: Name the callback function `[YOUR_FUNCTION_NAME]`. This function will handle the request when the endpoint is accessed.
5. **HTTP Method**: Use `[YOUR_HTTP_METHOD]` as the HTTP method for the endpoint (e.g., 'GET', 'POST').
6. **Query Parameter**: Use a query parameter called `[YOUR_QUERY_PARAMETER]` to capture user input.
7. **OpenAI API**: Integrate with the OpenAI API to process the request. Use `[YOUR_OPENAI_MODEL]` as the model (e.g., 'gpt-3.5-turbo'), `[YOUR_PROMPT]` as the prompt text that OpenAI should use, and `[YOUR_OPENAI_API_KEY]` as the API key.
8. **Permission**: Ensure that only logged-in users can access the endpoint. Use `is_user_logged_in()` in the `permission_callback` function.
9. **Response**: Return the processed result in JSON format with a `success` status, a message, and the result content.

### Output should include:
- PHP code to register the custom REST API endpoint.
- A callback function that processes the API request and interacts with the OpenAI API.
- Authentication to restrict access to logged-in users.

Example of Prompt

Create a WordPress PHP function that registers a custom REST API endpoint. Use the following details to customize the function:

1. **REST API Prefix**: Use the prefix `custom-api` for the custom REST API URL.
2. **API Version**: Set the version of the API to `v1`.
3. **Endpoint Name**: Define the endpoint as `summarize-text`.
4. **Callback Function**: Name the callback function `summarize_text_openai`. This function will handle the request when the endpoint is accessed.
5. **HTTP Method**: Use `POST` as the HTTP method for the endpoint.
6. **Query Parameter**: Use a query parameter called `text` to capture user input.
7. **OpenAI API**: Integrate with the OpenAI API to process the request. Use `gpt-3.5-turbo` as the model, `Summarize the following text:` as the prompt text that OpenAI should use, and `sk-1234567890abcdefg` as the API key.
8. **Permission**: Ensure that only logged-in users can access the endpoint. Use `is_user_logged_in()` in the `permission_callback` function.
9. **Response**: Return the processed result in JSON format with a `success` status, a message, and the result content.

### Output should include:
- PHP code to register the custom REST API endpoint.
- A callback function that processes the API request and interacts with the OpenAI API.
- Authentication to restrict access to logged-in users.

This prompt will instruct ChatGPT to generate a WordPress PHP function that does the following:

1. Registers a Custom REST API Endpoint

  • The prompt guides ChatGPT to create a new REST API endpoint in WordPress, allowing you to expose specific functionalities of your site through a custom API.
  • The API endpoint will be registered under a custom prefix (e.g., custom-api), a specified version (e.g., v1), and a defined path (e.g., generate-titles).

2. Defines How the API Endpoint Behaves

  • Callback Function: The prompt specifies that a function (defined by [YOUR_FUNCTION_NAME]) should handle the request to this endpoint. This function will process the input, interact with the OpenAI API if necessary, and return a response.
  • HTTP Method: The prompt allows you to choose the HTTP method (e.g., ‘GET’, ‘POST’) the endpoint will support.

3. Interacts with the OpenAI API

  • The generated PHP function will include logic to call the OpenAI API using the provided API key ([YOUR_OPENAI_API_KEY]) and model ([YOUR_OPENAI_MODEL]).
  • It processes the input (provided via the query parameter, like [YOUR_QUERY_PARAMETER]), sends it to OpenAI, and retrieves the response to be sent back to the client.

4. Handles Input and Output

  • Query Parameter: The prompt asks for a query parameter (e.g., topic) that the endpoint will use to capture user input.
  • Response: The function will return a structured JSON response containing the result of the API call (e.g., generated blog titles) and a success status.

5. Implements Access Control

  • Permission Callback: The prompt instructs ChatGPT to include a permission callback (is_user_logged_in()) that restricts access to the API endpoint to logged-in users only.
  • This ensures that only authorized users can access and use the API.

What This Prompt Achieves:

  • Dynamic API Creation: It helps create different custom REST API endpoints in WordPress tailored to various needs, such as generating content, processing data, etc.
  • OpenAI Integration: It automates the process of integrating OpenAI into your WordPress site, making it easier to build tools like text generators, summarizers, etc.
  • Access Control: It includes logic to ensure that only logged-in users can access the API endpoint, which is crucial if you’re implementing a point system or user-based access.

Example Output of PHP Code:

When you fill in the placeholders and use this prompt, ChatGPT will generate a complete PHP function. Here’s a simplified example of what the output might look like:

add_filter('rest_url_prefix', 'custom_rest_url_prefix');
function custom_rest_url_prefix() {
    return 'custom-api'; // Replace 'custom-api' with [YOUR_PREFIX]
}

function generate_summary_openai( WP_REST_Request $request ) {
    $user_text = $request->get_param('text'); // Replace 'text' with [YOUR_QUERY_PARAMETER]
    
    // OpenAI API URL and key
    $api_url = 'https://api.openai.com/v1/chat/completions';
    $api_key = '[YOUR_OPENAI_API_KEY]'; // Replace with your OpenAI API key
    
    // Headers for the OpenAI API
    $headers = [
        'Content-Type' => 'application/json',
        'Authorization' => 'Bearer ' . $api_key
    ];

    $conversation_history[] = [
        'role' => 'user',
        'content' => '[YOUR_PROMPT]: ' . $user_text
    ];

    // Body for the OpenAI API
    $body = [
        'model' => '[YOUR_OPENAI_MODEL]', // Replace with the desired OpenAI model
        'messages' => $conversation_history,
        'temperature' => 0.7
    ];

    // Args for the WordPress HTTP API
    $args = [
        'method' => 'POST',
        'headers' => $headers,
        'body' => json_encode($body),
        'timeout' => 120
    ];

    // Send the request
    $response = wp_remote_request($api_url, $args);
    $response_body = wp_remote_retrieve_body($response);
    $data = json_decode($response_body, true);

    // Handle the response
    $content = $data['choices'][0]['message']['content'];
    return [
        'success' => true,
        'message' => 'Summary Generated',
        'result' => $content
    ];
}

// Register the Custom REST API endpoint
add_action('rest_api_init', function () {
    register_rest_route('v2', '/generate-summary/', array( // Replace 'v2' and 'generate-summary' with [YOUR_VERSION] and [YOUR_ENDPOINT]
        'methods' => 'POST', // Replace 'POST' with [YOUR_HTTP_METHOD]
        'callback' => 'generate_summary_openai', // Replace 'generate_summary_openai' with [YOUR_FUNCTION_NAME]
        'permission_callback' => function () {
           return is_user_logged_in();
        }
    ));
});