Vorresti creare un plugin wordpress sfruttando le potenzialità di ChatGPT? Ti stai chiedendo se ChatGPT è in grado di aiutarti nello sviluppo di un plugin per wordpress?
Se ti stai ponendo queste domande allora seguimi in questo articolo nel quale vedremo insieme come sfruttare le potenzialità di ChatGPT per andare a creare un plugin wordpress con una discreta complessità e perfettamente funzionante.
Ho fatto questo test per verificare le potenzialità dell'intelligenza artificiale sul tema dello sviluppo software e devo dire che i risultati che ho ottenuto sono stati a dir poco sorprendenti.
Per cui andiamo subito a vedere come creare un plugin wordpress con ChatGPT!
I contenuti dell'articolo
- Come ottenere un buon risultato
- Le caratteristiche del plugin wordpress “myplugin”
- Le domande da fare per creare un plugin wordpress con ChatGPT
- Crea un plugin che gestisce uno shortcode
- Specifica i parametri dello shorcode
- Usa i parametri dello shorcode per fare una chiamata REST
- Aggiungi due parametri nell'header
- Crea una pagina amministrativa per registrare la secret key
- Rivedi il codice per gestire “temperature” e “max_tokens”come interi
- Dividi il plugin su più file
- Conclusioni
Come ottenere un buon risultato
Il test che ho fatto ha prodotto un plugin perfettamente funzionante e con una discreta complessità.
Per arrivare a dama ho fatto 7 domande via via sempre più complesse ed approfondite ed il risultato finale è stato veramente sorprendente.
Si perché forse non lo sai ma una delle caratteristiche più interessanti ed assolutamente innovative di ChatGPT è proprio la possibilità di avere una conversazione di tipo “continuo“, per cui ogni domanda è influenzata anche dalle domande e dalle risposte precedenti, proprio come quando si dialoga con una persona.
Ecco perché per ottenere un buon risultato è fondamentale rispettare queste semplici regole:
- Inizia con domande semplici
- Approfondisci i concetti con domande sempre più complesse
- Cerca di essere il più chiaro e preciso possibile
- Fatti uno schema di come vorresti arrivare alla soluzione
Io ad esempio mi sono prima scritto le domande ed ho cercato di creare uno schema logico su come andarle ad esporre all'intelligenza artificiale, proprio per ottenere un buon risultato finale.
Le caratteristiche del plugin wordpress “myplugin”
Il plugin “myplugin” che ho cercato di far creare a ChatGPT doveva avere le seguenti funzionalità:
- Invocare l'API rest di OpenAI “completions” per interrogare un modello generico e fornire la risposta
- Usare uno shortcode per inserire i parametri da passare al body della POST http (model, prompt, temperature e max_tokens)
- Usare una pagina nel pannello amministrativo di wordpress per inserire e registrare la secret key della chiamata REST da inserire nell'header (Authorization)
Pertanto a seguito dell'inserimento di uno shortcode come questo in un articolo:
[myshortcode model="text-davinci-003" prompt="quali sono gli ingredienti della pasta con il sugo" temperature="0.7" max_tokens="1000"]
Deve tornare la risposta di ChatGPT alla domanda inserita nello shortcode (es “quali sono gli ingredienti della pasta con il sugo”) usando il modello fornito (es “text-davinci-003”), la temperatura (es 0.7) ed i max_tokens (es 1.000).
Ossia il prodotto dello shortcode dovrà essere un testo simile a questo: “Gli ingredienti per preparare la pasta con il sugo di pomodoro sono: – Pomodori maturi – Olio extravergine di oliva – Aglio – Basilico – Sale – Pepe – Pasta (penne, spaghetti, fusilli, ecc.)”
Il valore della secret_key ossia del parametro “Authorization” da inserire nell'header della chiamata http deve essere registrato in una pagina specifica nel pannello amministrativo di wordpress.
Se vuoi saperne di più su come invocare le api rest di OpenAI ti consiglio questo mio articolo
Le domande da fare per creare un plugin wordpress con ChatGPT
Come detto, in questo test ho fatto 7 domande via via sempre più complesse ed approfondite ed il risultato finale è stato veramente sorprendente.
Cominciamo subito a vedere la prima domanda che ho fatto a ChatGPT
Crea un plugin che gestisce uno shortcode
La prima domanda che ho fatto a ChatGPT è stata questa
👉 Ciao, Crea un semplice plugin wordpress e chiamalo “myplugin” che mi consenta di creare uno shortcode personalizzato con parametri dinamici
Questa la sua risposta
Ciao!
Ecco i passaggi per creare un semplice plugin WordPress chiamato “myplugin” che ti consente di creare uno shortcode personalizzato con parametri dinamici:
- Crea una cartella chiamata “myplugin” nella directory “wp-content/plugins/” del tuo sito WordPress.
- All'interno della cartella “myplugin”, crea un file chiamato “myplugin.php”.
- Apri il file “myplugin.php” e inserisci il seguente codice:
<?php /** * Plugin Name: My Plugin * Description: Un plugin personalizzato per creare uno shortcode con parametri dinamici. * Version: 1.0 * Author: Il tuo nome * License: GPL-2.0+ */ function myshortcode( $atts ) { $a = shortcode_atts( array( 'parametro1' => 'valore1', 'parametro2' => 'valore2', ), $atts ); $output = '<p>Il parametro 1 è: ' . $a['parametro1'] . '</p>'; $output .= '<p>Il parametro 2 è: ' . $a['parametro2'] . '</p>'; return $output; } add_shortcode( 'myshortcode', 'myshortcode' );
Il codice sopra definisce una funzione chiamata “myshortcode” che accetta gli attributi passati nello shortcode e li utilizza per costruire un output personalizzato. La funzione viene poi registrata come shortcode con il nome “myshortcode” tramite la funzione “add_shortcode”.
Puoi personalizzare i valori di default dei parametri modificando i valori nell'array passato alla funzione “shortcode_atts”. Ad esempio, puoi modificare il valore predefinito del parametro1 impostandolo su ‘valore predefinito'.
Per utilizzare lo shortcode, inserisci il seguente codice nella pagina o nel post in cui desideri visualizzarlo:
[myshortcode parametro1="valore personalizzato 1" parametro2="valore personalizzato 2"]
Salva il file “myplugin.php”.
Attiva il plugin “My Plugin” dalla sezione “Plugin” del tuo sito WordPress.
Ora puoi utilizzare lo shortcode personalizzato ovunque sul tuo sito WordPress, modificando i parametri per ottenere l'output desiderato.
Spero che questo ti sia stato utile!
Come Puoi vedere ChatGPT ci ha dato subito alcuni utilissimi consigli relativi proprio alla definizione di base del plugin.
Per lavorare ho usato una installazione locale di wordpress, ho creato la cartella “myplugin” nella folder dei plugin wordpress, ho creato il file myplugin.php e l'ho aperto con VSCode.
Ho cosi inserito il codice suggerito da ChatGPT nel file myplugin.php e testato lo shortcode ovviamente attivando il plugin.
Come avrai potuto notare non ho ancora definito i nomi dei parametri e non ho minimamente parlato di chiamate rest http, ma ho solo chiesto di creare un semplice plugin che gestisca uno shortcode.
Il test dello shortcode ha, ovviamente, funzionato ed ha mostrato a video i parametri inseriti nello shortcode.
Ora vediamo la seconda domanda
Specifica i parametri dello shorcode
Ora che abbiamo lo shortcode chiediamo a ChatGPT di modificare i parametri dello shortcode per far si che siano proprio quelli da inserire nel body della futura chiamata REST http.
Ti ricordo che la chiamata REST all'endpoint completions deve avere un body cosi strutturato
Questa la domanda fatta
👉 Ok, ora modifica il plugin “myplugin” per far si che i parametri siano 4 e si chiamino “model”, “prompt” , “temperature” e “max_tokens”
Ecco la versione aggiornata del plugin “myplugin” con i nuovi parametri richiesti:
<?php /** * Plugin Name: My Plugin * Description: Un plugin personalizzato per creare uno shortcode con parametri dinamici. * Version: 1.0 * Author: Il tuo nome * License: GPL-2.0+ */ function myshortcode( $atts ) { $a = shortcode_atts( array( 'model' => 'text-davinci-002', 'prompt' => 'Inserisci qui il tuo prompt...', 'temperature' => '0.7', 'max_tokens' => '50', ), $atts ); $output = '<p>Il modello è: ' . $a['model'] . '</p>'; $output .= '<p>Il prompt è: ' . $a['prompt'] . '</p>'; $output .= '<p>La temperatura è: ' . $a['temperature'] . '</p>'; $output .= '<p>I max tokens sono: ' . $a['max_tokens'] . '</p>'; return $output; } add_shortcode( 'myshortcode', 'myshortcode' );
In questa versione del plugin, abbiamo definito quattro parametri diversi (“model”, “prompt”, “temperature” e “max_tokens”), impostato i loro valori di default nell'array passato alla funzione “shortcode_atts” e utilizzato questi valori all'interno della funzione “myshortcode” per costruire l'output personalizzato.
Per utilizzare lo shortcode con i nuovi parametri, inserisci il seguente codice nella pagina o nel post in cui desideri visualizzarlo:
[myshortcode model="nome-modello" prompt="testo-prompt" temperature="valore-temperatura" max_tokens="numero-max-tokens"]
Sostituisci “nome-modello”, “testo-prompt”, “valore-temperatura” e “numero-max-tokens” con i valori desiderati per i rispettivi parametri.
Spero che questa versione aggiornata del plugin ti sia utile!
La cosa davvero interessante di questa seconda versione è che ChatGPT ha già capito che questi quattro nuovi parametri sono associabili ad una chiamata ai modelli di OpenAI, infatti se vedi i valori di default che ha suggerito sono proprio quelli di una normale chiamata all'endpoint “completions“.
Ho testato il codice ed anche questa versione funziona senza problemi.
Andiamo avanti.
Usa i parametri dello shorcode per fare una chiamata REST
Ora andiamo a complicare un pochino le cose e chiediamo ad OpenAI di usare i parametri inseriti nello shortcode per creare un body json e fare una chiamata ad una api rest di tipo post.
👉 Grazie, ora modifica il plugin “myplugin” per far si che i parametri presi dallo shortcode vengano utilizzati per invocare una api rest di tipo POST in particolare inserisci i parametri nel body della chiamata http
Ecco la versione aggiornata del plugin “myplugin” che utilizza i parametri presi dallo shortcode per invocare una API REST di tipo POST con i parametri nel body della chiamata HTTP:
<?php /** * Plugin Name: My Plugin * Description: Un plugin personalizzato per creare uno shortcode con parametri dinamici. * Version: 1.0 * Author: Il tuo nome * License: GPL-2.0+ */ function myshortcode( $atts ) { $a = shortcode_atts( array( 'model' => 'text-davinci-002', 'prompt' => 'Inserisci qui il tuo prompt...', 'temperature' => '0.7', 'max_tokens' => '50', ), $atts ); // Costruisce l'array dei dati da inviare all'API REST $data = array( 'model' => $a['model'], 'prompt' => $a['prompt'], 'temperature' => $a['temperature'], 'max_tokens' => $a['max_tokens'] ); // Esegue la chiamata HTTP POST all'API REST $api_url = 'https://example.com/api'; $response = wp_remote_post( $api_url, array( 'method' => 'POST', 'body' => $data ) ); // Verifica se la chiamata è stata eseguita con successo if ( is_wp_error( $response ) ) { return '<p>Si è verificato un errore durante la chiamata all\'API REST.</p>'; } // Recupera la risposta dall'API REST $body = wp_remote_retrieve_body( $response ); $output = '<p>Risposta dell\'API REST: ' . $body . '</p>'; return $output; } add_shortcode( 'myshortcode', 'myshortcode' );
In questa versione del plugin, abbiamo utilizzato i parametri presi dallo shortcode per costruire un array di dati da inviare all'API REST. Successivamente, abbiamo eseguito una chiamata HTTP POST all'API REST utilizzando la funzione “wp_remote_post” di WordPress, passando l'URL dell'API REST e l'array di dati come parametri.
Abbiamo quindi verificato se la chiamata è stata eseguita con successo utilizzando la funzione “is_wp_error”, e se la chiamata ha avuto successo, abbiamo recuperato la risposta dall'API REST utilizzando la funzione “wp_remote_retrieve_body” e l'abbiamo utilizzata per costruire l'output personalizzato.
Per utilizzare lo shortcode con i nuovi parametri e invocare l'API REST, inserisci il seguente codice nella pagina o nel post in cui desideri visualizzarlo:
[myshortcode model="nome-modello" prompt="testo-prompt" temperature="valore-temperatura" max_tokens="numero-max-tokens"]
Sostituisci “nome-modello”, “testo-prompt”, “valore-temperatura” e “numero-max-tokens” con i valori desiderati per i rispettivi parametri.
Sostituisci “https://example.com/api” con l'URL dell'API REST che desideri invocare.
Spero che questa versione aggiornata del plugin ti sia utile!
Come avrai notato il codice fornito da ChatGPT prende i dati dallo shortcode e li usa per creare un body da inserire nella chiamata REST :
$response = wp_remote_post( $api_url, array( 'method' => 'POST', 'body' => $data ) );
Usando un endpoint di test e suggerendo di modificare l'endpoint con quello da usare, infatti a fine test dovrai usare https://api.openai.com/v1/completions.
Non ho testato il codice perché qui manca la parte relativa alla creazione dell'header con la secret key, che ti ricordo dovrà essere come questa
per cui andiamo avanti con la domanda successiva.
Aggiungi due parametri nell'header
Per consentire di fare un test della chiamata all'endpoint di OpenAI dobbiamo gestire anche l'header, per cui questa la domanda che ho fatto:
👉 Ora permettimi di aggiungere anche l'header della chiamata POST e di usare due parametri nell'header della chiamata chiamati rispettivamente “Content-Type” e “Authorization”
Ecco la versione aggiornata del plugin “myplugin” che utilizza i parametri dello shortcode per invocare un'API REST con l'header della chiamata POST personalizzato:
<?php /** * Plugin Name: My Plugin * Description: Un plugin personalizzato per creare uno shortcode con parametri dinamici. * Version: 1.0 * Author: Il tuo nome * License: GPL-2.0+ */ function myshortcode( $atts ) { $a = shortcode_atts( array( 'model' => 'text-davinci-002', 'prompt' => 'Inserisci qui il tuo prompt...', 'temperature' => '0.7', 'max_tokens' => '50', 'content_type' => 'application/json', 'authorization' => 'Bearer API_TOKEN' ), $atts ); // Costruisce l'array dei dati da inviare all'API REST $data = array( 'model' => $a['model'], 'prompt' => $a['prompt'], 'temperature' => $a['temperature'], 'max_tokens' => $a['max_tokens'] ); // Costruisce l'array degli header della chiamata HTTP POST $headers = array( 'Content-Type' => $a['content_type'], 'Authorization' => $a['authorization'] ); // Esegue la chiamata HTTP POST all'API REST $api_url = 'https://example.com/api'; $response = wp_remote_post( $api_url, array( 'method' => 'POST', 'body' => $data, 'headers' => $headers ) ); // Verifica se la chiamata è stata eseguita con successo if ( is_wp_error( $response ) ) { return '<p>Si è verificato un errore durante la chiamata all\'API REST.</p>'; } // Recupera la risposta dall'API REST $body = wp_remote_retrieve_body( $response ); $output = '<p>Risposta dell\'API REST: ' . $body . '</p>'; return $output; } add_shortcode( 'myshortcode', 'myshortcode' );
In questa versione del plugin, abbiamo aggiunto due nuovi parametri allo shortcode chiamati “content_type” e “authorization”. Questi parametri vengono utilizzati per costruire l'array degli header della chiamata HTTP POST, insieme ai dati dell'array “data”.
Abbiamo quindi eseguito la chiamata HTTP POST all'API REST utilizzando la funzione “wp_remote_post”, passando l'URL dell'API REST, l'array di dati e l'array degli header come parametri.
Come prima, abbiamo verificato se la chiamata è stata eseguita con successo utilizzando la funzione “is_wp_error”, e se la chiamata ha avuto successo, abbiamo recuperato la risposta dall'API REST utilizzando la funzione “wp_remote_retrieve_body” e l'abbiamo utilizzata per costruire l'output personalizzato.
Per utilizzare lo shortcode con i nuovi parametri e l'header personalizzato, inserisci il seguente codice nella pagina o nel post in cui desideri visualizzarlo:
[myshortcode model=”nome-modello” prompt=”testo-prompt” temperature=”valore-temperatura” max_tokens=”numero-max-tokens” content_type=”content_type” authorization=”authorization”]
Questo codice può già essere testato, inserendo l'endpoint di OpenAI ed il parametro di sicurezza (secret key) direttamente nello shorcode.
In questa versione i due parametri dell'header sono inseriti nello shortcode stesso.
Crea una pagina amministrativa per registrare la secret key
A noi però interessa spostarli in una pagina di amministrazione dedicata e toglierli dallo shortcode.
Vediamo come fare con una domanda specifica.
👉 Perfetto, ora aggiungi una pagina di gestione nel pannello admin di wordpress dove poter inserire e salvare i due parametri usati nell'header della chiamata (toglili dallo shortcode)
Ecco la versione aggiornata del plugin “myplugin” che consente di gestire i due parametri usati nell'header della chiamata attraverso una pagina di gestione personalizzata nel pannello di amministrazione di WordPress:
<?php /** * Plugin Name: My Plugin * Description: Un plugin personalizzato per creare uno shortcode con parametri dinamici. * Version: 1.0 * Author: Il tuo nome * License: GPL-2.0+ */ // Aggiunge una pagina di gestione personalizzata nel pannello di amministrazione di WordPress function myplugin_add_admin_page() { add_options_page( 'Gestione API REST', 'Gestione API REST', 'manage_options', 'myplugin-api-settings', 'myplugin_api_settings_page' ); } add_action( 'admin_menu', 'myplugin_add_admin_page' ); // Crea il markup della pagina di gestione personalizzata function myplugin_api_settings_page() { ?> <div class="wrap"> <h1>Gestione API REST</h1> <form method="post" action="options.php"> <?php settings_fields( 'myplugin-api-settings-group' ); ?> <?php do_settings_sections( 'myplugin-api-settings-group' ); ?> <table class="form-table"> <tr valign="top"> <th scope="row">Content-Type</th> <td><input type="text" name="myplugin_content_type" value="<?php echo esc_attr( get_option('myplugin_content_type') ); ?>" /></td> </tr> <tr valign="top"> <th scope="row">Authorization</th> <td><input type="text" name="myplugin_authorization" value="<?php echo esc_attr( get_option('myplugin_authorization') ); ?>" /></td> </tr> </table> <?php submit_button(); ?> </form> </div> <?php } // Registra le impostazioni della pagina di gestione personalizzata function myplugin_register_settings() { register_setting( 'myplugin-api-settings-group', 'myplugin_content_type' ); register_setting( 'myplugin-api-settings-group', 'myplugin_authorization' ); } add_action( 'admin_init', 'myplugin_register_settings' ); // Crea lo shortcode personalizzato function myshortcode( $atts ) { $a = shortcode_atts( array( 'model' => 'text-davinci-002', 'prompt' => 'Inserisci qui il tuo prompt...', 'temperature' => '0.7', 'max_tokens' => '50' ), $atts ); // Costruisce l'array dei dati da inviare all'API REST $data = array( 'model' => $a['model'], 'prompt' => $a['prompt'], 'temperature' => $a['temperature'], 'max_tokens' => $a['max_tokens'] ); // Recupera i valori dei parametri usati nell'header della chiamata HTTP POST dalla pagina di gestione $content_type = get_option( 'myplugin_content_type' ); $authorization = get_option( 'myplugin_authorization' ); // Costruisce l'array degli header della chiamata HTTP POST $headers = array( 'Content-Type' => $content_type, 'Authorization' => $authorization ); // URL dell'API REST $url = 'https://api.openai.com/v1/completions'; // Configura le opzioni della chiamata HTTP POST $args = array( 'method' => 'POST', 'body' => json_encode( $data ), 'headers' => $headers ); // Esegue la chiamata HTTP POST $response = wp_remote_post( $url, $args ); // Controlla se ci sono errori nella chiamata HTTP POST if( is_wp_error( $response ) ) { return "Si è verificato un errore durante la chiamata API: " . $response->get_error_message(); } else { $response_body = json_decode( wp_remote_retrieve_body( $response ), true ); return $response_body['choices'][0]['text']; } } add_shortcode( 'myshortcode', 'myshortcode' );
In questo modo, quando si utilizza lo shortcode [myshortcode] in una pagina o un post di WordPress, i parametri vengono inseriti nel body della chiamata HTTP POST, mentre i parametri usati nell'header vengono recuperati dalla pagina di gestione personalizzata nel pannello di amministrazione di WordPress.
Come si vede ChatGPT ha capito alla perfezione cosa fare ed ha creato la pagina amministrativa di wordpress per registrare i valori da inserire nell'header.
Testando la pagina ho però trovato un piccolo bug in quanto i valori “temperature” e “max_tokens” sono gestiti come stringhe invece ad OpenAI vanno trasmessi come interi, per cui chiediamo di modificare il codice e correggere il bug.
Rivedi il codice per gestire “temperature” e “max_tokens”come interi
Questa la domanda fatta per correggere il bug
👉 Perfetto, rivedi il codice per far si che i valori “temperature” e “max_tokens” vengano inviati come interi e non come stringhe
Certamente! Ecco la versione aggiornata del codice:
function myshortcode( $atts ) { // Imposta i valori di default dei parametri $params = shortcode_atts( array( 'model' => '', 'prompt' => '', 'temperature' => 0, 'max_tokens' => 0 ), $atts ); // Converte i valori di temperature e max_tokens in interi $params['temperature'] = intval( $params['temperature'] ); $params['max_tokens'] = intval( $params['max_tokens'] ); // Recupera i valori della chiave API e del Content-Type dall'opzione del plugin $api_key = get_option( 'myplugin_api_key' ); $content_type = get_option( 'myplugin_content_type' ); // Imposta gli header della chiamata HTTP POST $headers = array( 'Content-Type' => $content_type, 'Authorization' => 'Bearer ' . $api_key ); // Imposta i dati da inviare come body della chiamata HTTP POST $data = array( 'model' => $params['model'], 'prompt' => $params['prompt'], 'temperature' => $params['temperature'], 'max_tokens' => $params['max_tokens'] ); // URL dell'API REST $url = 'https://api.openai.com/v1/completions'; // Configura le opzioni della chiamata HTTP POST $args = array( 'method' => 'POST', 'body' => json_encode( $data ), 'headers' => $headers ); // Esegue la chiamata HTTP POST $response = wp_remote_post( $url, $args ); // Controlla se ci sono errori nella chiamata HTTP POST if( is_wp_error( $response ) ) { return "Si è verificato un errore durante la chiamata API: " . $response->get_error_message(); } else { $response_body = json_decode( wp_remote_retrieve_body( $response ), true ); return $response_body['choices'][0]['text']; } } add_shortcode( 'myshortcode', 'myshortcode' );
Nella nuova versione del codice, ho utilizzato la funzione intval()
per convertire i valori delle variabili temperature
e max_tokens
in interi, in modo che possano essere inviati correttamente nella chiamata HTTP POST.
Anche in questo caso ha subito capito cosa fare ed ha usato il costrutto intval() associato alle variabili suggerite.
Dividi il plugin su più file
Ora cerchiamo solo di andare a strutturare al meglio il plugin, suddividendolo in più file, questa la domanda:
👉 Ora consigliami come andare a strutturare al meglio su più file il plugin appena creato, grazie
Strutturare il plugin su più file può aiutare a organizzare meglio il codice e renderlo più facile da gestire. Ecco come potresti suddividere il codice del plugin “myplugin” su più file:
- File principale del plugin: myplugin.php
- File per la definizione dello shortcode: shortcode.php
- File per la gestione della pagina di amministrazione: admin-page.php
- File per la gestione della chiamata HTTP POST: http-post.php
Ecco come potrebbe essere la struttura del codice su questi file:
- File principale del plugin: myplugin.php
<?php /** * Plugin Name: MyPlugin * Description: Un plugin personalizzato per WordPress. * Version: 1.0.0 */ // Includi il file per la definizione dello shortcode require_once( plugin_dir_path( __FILE__ ) . 'shortcode.php' ); // Includi il file per la gestione della pagina di amministrazione require_once( plugin_dir_path( __FILE__ ) . 'admin-page.php' ); // Includi il file per la gestione della chiamata HTTP POST require_once( plugin_dir_path( __FILE__ ) . 'http-post.php' );
- File per la definizione dello shortcode: shortcode.php
<?php function myshortcode( $atts ) { // Imposta i valori di default dei parametri $params = shortcode_atts( array( 'model' => '', 'prompt' => '', 'temperature' => 0, 'max_tokens' => 0 ), $atts ); // Converte i valori di temperature e max_tokens in interi $params['temperature'] = intval( $params['temperature'] ); $params['max_tokens'] = intval( $params['max_tokens'] ); // Invoca la chiamata HTTP POST per ottenere la risposta dall'API $response = invoke_http_post( $params ); // Controlla se ci sono errori nella chiamata HTTP POST if( is_wp_error( $response ) ) { return "Si è verificato un errore durante la chiamata API: " . $response->get_error_message(); } else { $response_body = json_decode( wp_remote_retrieve_body( $response ), true ); return $response_body['choices'][0]['text']; } } add_shortcode( 'myshortcode', 'myshortcode' );
- File per la gestione della pagina di amministrazione: admin-page.php
<?php // Aggiungi una voce di menu alla sezione Strumenti del pannello di amministrazione function myplugin_add_admin_menu() { add_submenu_page( 'tools.php', 'Impostazioni MyPlugin', 'MyPlugin', 'manage_options', 'myplugin-settings', 'myplugin_settings_page' ); } add_action( 'admin_menu', 'myplugin_add_admin_menu' ); // Crea la pagina di amministrazione function myplugin_settings_page() { ?> <div class="wrap"> <h1>Impostazioni MyPlugin</h1> <form method="post" action="options.php"> <?php settings_fields( 'myplugin_options_group' ); ?> <?php do_settings_sections( 'myplugin-settings' ); ?> <?php submit_button(); ?> </form> </div> <?php
- File per la gestione della chiamata HTTP POST: http-post.php
<?php // Invoca la chiamata HTTP POST all'API function invoke_http_post( $params ) { // Recupera i valori dei parametri dall'opzione del plugin $content_type = get_option( 'myplugin_content_type' ); $authorization = get_option( 'myplugin_authorization' ); // Crea l'array dei parametri per la chiamata HTTP POST $post_data = array( 'model' => $params['model'], 'prompt' => $params['prompt'], 'temperature' => $params['temperature'], 'max_tokens' => $params['max_tokens'] ); // Crea l'array dei parametri per l'header della chiamata HTTP POST $headers = array( 'Content-Type' => $content_type, 'Authorization' => $authorization ); // Effettua la chiamata HTTP POST all'API $response = wp_remote_post( 'https://api.openai.com/v1/engines/davinci-codex/completions', array( 'headers' => $headers, 'body' => $post_data ) ); return $response; }
Anche in questo caso ha capito subito come comportarsi ed ha consigliato di suddividere il codice su 4 diversi file:
- File principale del plugin: myplugin.php
- File per la definizione dello shortcode: shortcode.php
- File per la gestione della pagina di amministrazione: admin-page.php
- File per la gestione della chiamata HTTP POST: http-post.php
Che mi sembra una ottima scelta.
Fatta la suddivisione ho ricontrollato il codice ed inserito l'endpoint corretto, sono andato cosi a testare lo shortcode attivando il plugin
Poi usando il link “Gestione API REST” nel menu
sono andato ad inserire il codice di sicurezza nella pagina dedicata “Gestione API Rest”
Ho cosi creato un articolo ed ho inserito lo shortcode
Ed il risultato è stato esattamente questo, ossia gli ingredienti necessari per fare la pasta con il sugo.
Incredibile ma vero!
Con solo 7 domande sono riuscito a creare un plugin wordpress perfettamente funzionante e con una discreta se non alta complessità.
In pratica ho usato l'intelligenza artificiale per creare un plugin wordpress che sia in grado di interrogare l'intelligenza artificiale stessa.
Conclusioni
In questo articolo abbiamo visto insieme come creare un plugin wordpress con ChatGPT che abbia una discreta complessità e soprattutto che sia perfettamente funzionante.
Per arrivare al risultato ho fatto 7 domande, via via più complesse e soprattutto sempre correlate con le domande precedenti ed arrivare cosi al grado di complessità finale che il plugin richiedeva.
Se avessi cercato di creare il plugin con una sola domanda avrei fallito e non sarei riuscito a creare un codice cosi ben strutturato.
Che te ne pare del mio test? Hai mai usato o stai usando l'intelligenza artificiale per creare codice e realizzare plugin per wordpress? Parliamone insieme nei commenti!
2 commenti
bell’articolo, ma non funziona. Ho provato a copiare e incollare la tua prima domanda a chatgpt e mi ha risposto:
“Mi dispiace, ma non posso creare o fornire codice per plugin di WordPress. Ti suggerisco di consultare la documentazione ufficiale di WordPress o i forum di sviluppo per trovare guide su come creare un plugin con shortcode personalizzati.”
-_-
Ciao Giulia,
mi dispiace ma io non riscontro questo problema, forse perchè stai usando una versione non aggiornata di ChatGPT? (Es model 3.0)