Créer un plugin fonctionnel et administrable en 1 minute grâce à Chatgpt, est-ce possible ?
Pas de suspense, hé vous donne la réponse : oui ! Sans aucun bug et intégralement fonctionnel en moins d’une minute ! Dicter l’énoncé m’aura finalement pris plus de temps. De plus, comme quoi je n’y croyait pas vraiment, j’ai effectué ce test de génération de code et d’installation de plugin depuis mon téléphone Android, d’où les captures d’écrans. Il m’a fallu quelques minutes pour trouver une application pour copier le code généré, enregistrer en un fichier PHP puis l’installer directement depuis l’administration de WordPress. Pas besoin de FTP.
Ma demande transmise à Chatgpt
Crée le code pour créer un plugin WordPress qui affiche une liste de sites web, dans la partie admin, une page de gestion du plugin où l’on peut ajouter ou supprimer un lien, joindre une photo où un screenshot du site web, un titre, une description, et également possibilité de catégoriser et d’apposer des étiquettes afin de pouvoir les afficher ou trier selon notre volonté sur une page en front-end ChatGPT
Message transmis à Chatgpt, sans réfléchir à la tournure de mes phrases, aux fautes d’orthographe ou la ponctuation…
Réponse de Chatgpt
Bien sûr! Voici un exemple de code pour créer un plugin WordPress qui affiche une liste de sites web dans la partie admin, avec une page de gestion du plugin où vous pouvez ajouter ou supprimer des liens, joindre une photo ou un screenshot du site web, et fournir un titre, une description, ainsi que des catégories et des étiquettes pour trier et afficher les sites web selon votre volonté sur une page front-end :
Chatgpt réponse
Le code intégral que Chatgpt a généré en 1 fois !
phpCopy code<?php
/*
Plugin Name: Mon Plugin Sites Web
Plugin URI: http://www.example.com
Description: Plugin WordPress pour afficher une liste de sites web.
Version: 1.0
Author: Votre Nom
Author URI: http://www.example.com
License: GPL2
*/
// Crée la table personnalisée pour stocker les sites web
function wpse_create_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'sites_web';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
title varchar(255) NOT NULL,
description text NOT NULL,
url varchar(255) NOT NULL,
image varchar(255),
categories text,
tags text,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'wpse_create_table' );
// Enregistre le menu de gestion du plugin
function wpse_add_admin_menu() {
add_menu_page(
'Gestion des Sites Web',
'Sites Web',
'manage_options',
'sites-web',
'wpse_render_admin_page',
'dashicons-admin-links',
20
);
}
add_action( 'admin_menu', 'wpse_add_admin_menu' );
// Affiche la page de gestion du plugin
function wpse_render_admin_page() {
?>
<div class="wrap">
<h1>Gestion des Sites Web</h1>
<h2>Ajouter un nouveau site web</h2>
<form method="post" action="<?php echo admin_url( 'admin-post.php' ); ?>" enctype="multipart/form-data">
<input type="hidden" name="action" value="wpse_add_site">
<label for="title">Titre :</label>
<input type="text" name="title" id="title" required><br>
<label for="description">Description :</label>
<textarea name="description" id="description" required></textarea><br>
<label for="url">URL :</label>
<input type="text" name="url" id="url" required><br>
<label for="image">Image :</label>
<input type="file" name="image" id="image"><br>
<label for="categories">Catégories (séparées par des virgules) :</label>
<input type="text" name="categories" id="categories"><br>
<label for="tags">Étiquettes (séparées par des virgules) :</label>
<input type="text" name="tags" id="tags"><br>
<?php wp_nonce_field( 'wpse_add_site', 'wpse_add_site_nonce' ); ?>
<input type="submit" value="Ajouter">
</form>
<h2>Liste des sites web</h2>
<table class="wp-list-table widefat fixed striped">
<thead>
<tr>
<th>Titre</th>
<th>Description</th>
<th>URL</th>
<th>Image</th>
<th>Catégories</th>
<th>Étiquettes</th>
<th></th>
</tr>
</thead>
<tbody>
<?php
global $wpdb;
$table_name = $wpdb->prefix . 'sites_web';
$sites = $wpdb->get_results( "SELECT * FROM $table_name" );
foreach ( $sites as $site ) {
echo '<tr>';
echo '<td>' . esc_html( $site->title ) . '</td>';
echo '<td>' . esc_html( $site->description ) . '</td>';
echo '<td>' . esc_html( $site->url ) . '</td>';
echo '<td><img src="' . esc_html( $site->image ) . '" alt="" width="100"></td>';
echo '<td>' . esc_html( $site->categories ) . '</td>';
echo '<td>' . esc_html( $site->tags ) . '</td>';
echo '<td><a href="' . admin_url( 'admin-post.php?action=wpse_delete_site&id=' . $site->id ) . '">Supprimer</a></td>';
echo '</tr>';
}
?>
</tbody>
</table>
</div>
<?php
}
// Traite la soumission du formulaire pour ajouter un site web
function wpse_add_site() {
if ( ! isset( $_POST['wpse_add_site_nonce'] ) || ! wp_verify_nonce( $_POST['wpse_add_site_nonce'], 'wpse_add_site' ) ) {
wp_die( 'Erreur de vérification du formulaire.' );
}
global $wpdb;
$table_name = $wpdb->prefix . 'sites_web';
$title = sanitize_text_field( $_POST['title'] );
$description = sanitize_textarea_field( $_POST['description'] );
$url = esc_url( $_POST['url'] );
$image = '';
if ( isset( $_FILES['image'] ) && ! empty( $_FILES['image']['tmp_name'] ) ) {
$upload_dir = wp_upload_dir();
$image_data = wp_handle_upload( $_FILES['image'], array( 'test_form' => false ) );
if ( isset( $image_data['url'] ) ) {
$image = esc_url( $image_data['url'] );
}
}
$categories = sanitize_text_field( $_POST['categories'] );
$tags = sanitize_text_field( $_POST['tags'] );
$wpdb->insert(
$table_name,
array(
'title' => $title,
'description' => $description,
'url' => $url,
'image' => $image,
'categories' => $categories,
'tags' => $tags
),
array( '%s', '%s', '%s', '%s', '%s', '%s' )
);
wp_redirect( admin_url( 'admin.php?page=sites-web' ) );
exit;
}
add_action( 'admin_post_wpse_add_site', 'wpse_add_site' );
// Traite la suppression d'un site web
function wpse_delete_site() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( 'Accès refusé.' );
}
if ( ! isset( $_GET['id'] ) ) {
wp_die( 'ID de site web manquant.' );
}
$site_id = intval( $_GET['id'] );
global $wpdb;
$table_name = $wpdb->prefix . 'sites_web';
$wpdb->delete( $table_name, array( 'id' => $site_id ), array( '%d' ) );
wp_redirect( admin_url( 'admin.php?page=sites-web' ) );
exit;
}
add_action( 'admin_post_wpse_delete_site', 'wpse_delete_site' );
// Affiche la liste des sites web en front-end
function wpse_render_frontend() {
ob_start();
?>
<div class="site-list">
<?php
global $wpdb;
$table_name = $wpdb->prefix . 'sites_web';
$sites = $wpdb->get_results( "SELECT * FROM $table_name" );
foreach ( $sites as $site ) {
?>
<div class="site">
<h3><?php echo esc_html( $site->title ); ?></h3>
<p><?php echo esc_html( $site->description ); ?></p>
<a href="<?php echo esc_url( $site->url ); ?>">Visiter le site</a>
<?php if ( ! empty( $site->image ) ) : ?>
<img src="<?php echo esc_url( $site->image ); ?>" alt="<?php echo esc_attr( $site->title ); ?>" width="200">
<?php endif; ?>
<div class="categories"><?php echo esc_html( $site->categories ); ?></div>
<div class="tags"><?php echo esc_html( $site->tags ); ?></div>
</div>
<?php
}
?>
</div>
<?php
return ob_get_clean();
}
add_shortcode( 'site_list', 'wpse_render_frontend' );
Ce code crée un plugin WordPress qui ajoute une page de gestion dans l’administration où vous pouvez ajouter et supprimer des sites web avec leurs informations (titre, description, URL, image, catégories et étiquettes). Il affiche également une liste des sites web en front-end à l’aide d’un shortcode
[site_list]
.Assurez-vous de créer un fichier dans le dossier
/wp-content/plugins/
avec le nommon-plugin-sites-web.php
et d’y coller le code ci-dessus. Ensuite, activez le plugin depuis le tableau de bord de votre site WordPress.Free Research Preview. ChatGPT may produce inaccurate information about people, places, or facts. ChatGPT May 24 Version
Fin de la réponse de Chatgpt et là, personne n’y crois
Vous avez le rendu de son travail juste en dessous, le site web de ma compagne y est affiché “Aux 4 pattes”. Chatgpt m’a également ajouté un lien d’administration dans le backend où l’on peut ajouter ou supprimer les liens.
En l’état, ce plugin ne casse pas trois pattes à un canard. J’ai oublié de mentionner “modifier”, donc la fonction pour modifier un site déjà soumis n’est pas encore implémenté. La mise en page est à revoir des deux côtés. Aucune gestion du seo etc..
Il a même créé dans le code, ka requête pour ajouter une nouvelle table dans la base donnée alors même que je n’avais pas effectué cette demande !
Quoi qu’il en soit, cela reste une prouesse et un formidable outils pour les développeurs en herbe pour apprendre et débuter dans le codage de plugin WordPress par exemple.
J’avais déjà vu des vidéos sur YouTube mais malgré tout, ils avaient des petits bugs à gérer, des demandes de modifications supplémentaires pour que le plugin fonctionne. Or là, je n’ai strictement rien demandé de plus n’y fait aucune modification ! Un simple copier-coller et hop c’était fini ! Je suis bluffé, époustouflé ! Chatgpt bravo !