Cómo escribir un plugin para WordPress con una inteligencia artificial

¿Es posible crear un plugin para WordPress sin tener NI IDEA de programar?

Sí, es posible. La red esta llena de estupendos tutoriales de creación de plugins (por ejemplo los típicos plugins de funciones) y de millones de interesantes scripts que puedes añadir a tu sitio.

Pero ¿qué pasa si no existe lo que necesito o tengo que añadir alguna función o ajuste extra? Pues pasa que tus limitaciones en programación te van a pasar factura. Incluso aunque tengas algunas nociones básicas.

Y es que no nos engañemos, adquirir las competencias básicas en PHP para programar un plugin para WordPress no es una tarea de dos tardes.

Hasta hoy.

Programar con una IA

Las inteligencias artificiales conversacionales han explotado recientemente y ya se están usando para la creación de contenidos en formato texto. Y no digamos las IAs de generación de imágenes, con capacidades impresionantes, incluso en formato vídeo.

Mientras muchas personas se preguntaban si algún día podrían ayudarnos a programar (están siendo utilizadas hace un tiempo en la asistencia en el aprendizaje y la corrección) las IAs han empezado a crear plugins para WordPress a demanda desde el prompt.

Sí, como lo lees. Lo he probado en primera persona y te voy a contar cómo.

Para esta tarea casi mágica he utilizado el chatbot de OpenAI. Es una herramienta tremendamente simple: un prompt donde le pides lo que quieres y una caja de texto donde la IA responde.

Hay un par de aspectos importantes. La IA de este chatbot limita la cantidad de texto que vuelca como respuesta y esta puede quedar cortada.

Por otra parte, entiende el contexto de la conversación y puedes pedirle que siga respondiendo para ampliar la respuesta o incluso ofrecer una respuesta alternativa.

Es decir, la IA sigue la conversación y las respuestas estarán relacionadas con bastante coherencia. No se trata de interacciones aisladas unas de otras. Y eso tiene un potencial enorme.

Crear un plugin con una Inteligencia Artificial

Para este caso práctico que nos ocupa le he pedido esto al bot de OpenAI:

«Escribe un plugin para WordPress que se llame «Modo pruebas» que escriba la frase «Web en pruebas» en la cabecera en todas las páginas del sitio. El plugin debe tener una página de ajustes para activar o desactivar esa funcionalidad.»

A continuación la IA ha introducido el tema con un texto descriptivo y enseguida ha empezado a escupir código. En cada función, acción o filtro del programa, me añadía una explicación aclaratoria, además de comentar el código.

Como he comentado más arriba, este bot no entrega todo el contenido de golpe, así que hay que ir empujándole un poquito de vez en cuando con alguna instrucción como «sigue» o «continúa».

A veces el código como tal, se interrumpe. Con el «continúa» que mencionaba antes se consigue repetir la última función pero en el HTML puede que se salte alguna cosilla que hay que revisar a mano. También puede suceder algún error de parseo por una llave que se quede abierta (nada difícil de arreglar) en una revisión rutinaria después en tu editor de código preferido (cuentan con asistencia en este sentido).

Tras unos cuantos empujones y un repaso de la sintaxis ya tengo mi código del plugin modo-pruebas.php. Puedes cacharrearlo en mi Github para ver la calidad del código ya que no he modificado prácticamente nada, salvo los créditos.

<?php
/*
  Plugin Name: Modo pruebas
  Plugin URI: https://chat.openai.com/
  Description: Escribe la frase "Web en pruebas" en la cabecera
  en todas las páginas del sitio y permite activar o desactivar
  esa funcionalidad desde la página de ajustes.
  Version: 1.0
  Author: ChatBot
  Author URI: https://chat.openai.com/
  License: GPL2
*/
// Crear una función que escriba la frase "Web en pruebas" en
// la cabecera de todas las páginas del sitio.
function testing_mode_header() {
  if (get_option('testing_mode_enabled')) {
    echo '<h1>Web en pruebas</h1>';
  }
}
// Asignar la función anterior al hook "wp_head" para £que se ejecute en la cabecera de todas las páginas del sitio.
add_action('wp_head', 'testing_mode_header');
// Crear una función que registre una página de ajustes para el plugin.
function testing_mode_settings_page() {
  add_options_page(
    'Modo pruebas',
    'Modo pruebas',
    'manage_options',
    'testing-mode',
    'testing_mode_settings_page_html'
  );
}
add_action('admin_menu', 'testing_mode_settings_page');
// Crear una función que genere el contenido HTML de la página de ajustes.
function testing_mode_settings_page_html() {
  // Comprobar si el usuario tiene permisos para acceder a la página de ajustes.
  if (!current_user_can('manage_options')) {
    return;
  }
  // Mostrar un formulario que permita al usuario activar o desactivar la opción "Modo pruebas".
  ?>
  <div class="wrap">
    <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
    <form action="options.php" method="post">
      <?php settings_fields('testing_mode_options'); ?>
      <?php do_settings_sections('testing-mode'); ?>
      <table class="form-table">
        <tr valign="top">
          <th scope="row">Modo pruebas</th>
          <td>
            <label for="testing_mode_enabled">
              <input name="testing_mode_enabled" type="checkbox" id="testing_mode_enabled" value="1" <?php checked('1', get_option('testing_mode_enabled')); ?> >
              Habilitar "Web en pruebas"
            </label>
          </td>
        </tr>
      </table>
      <?php submit_button(); ?>
    </form>
  </div>
<?php
}
// Comprobar si se ha enviado el formulario.
if (isset($_POST['testing_mode_enabled'])) {
  // Guardar la opción "Modo pruebas" en la base de datos.
  update_option('testing_mode_enabled', $_POST['testing_mode_enabled']);
}
  function testing_mode_register_settings() {
    register_setting(
      'testing_mode_options',
      'testing_mode_enabled'
    );
  }
  add_action('admin_init', 'testing_mode_register_settings');

Para crear el fichero puedes usar cualquier editor de código estándar y guardar un archivo con el nombre del plugin y la extensión .php.

Una vez lo tenemos solo nos queda comprimir como un zip, subirlo a un WordPress de pruebas (jamás en producción, por favor) y activar el plugin.

Voilà!

Plugin en marcha y funcionando. A continuación puedes ver el resultado en el front una vez habilito la función.

Cuando lo desactivo desde la página de Ajustes creada en el menú del Escritorio, todo vuelve a la normalidad.

Conclusiones:

Volviendo a la cuestión con la que abría este post, donde me preguntaba si se puede programar un plugin sin tener ni idea de código, creo que la respuesta AÚN es no. Pero falta realmente muy, muy poco.

En el caso que he descrito durante el artículo se requiere un mínimo de conocimiento de lo que estás haciendo y de cómo funciona un plugin para WordPress. Sobre todo por las propias limitaciones de la interfaz de la IA, más que por su capacidad real.

Después de lo visto y a fecha de hoy (diciembre de 2022)

  1. OpenAI es capaz de generar, al menos, plugins sencillos para WordPress.
  2. Por el formato de entrega es posible que requieran un cierto trabajo de repaso de sintaxis.
  3. Es una estupenda forma de estudiar programación, ya que todo el código va comentado y explicado.

Especifico la fecha porque esto se esta acelerando de una forma increíble y es previsible que dé un paso de gigante cada semana que pase.

Como no podía ser de otra manera, esta metodología puede fallar. Y lo hará. Sobre todo para plugins algo más complicados o con dependencias. Así que, insisto, prueba SIEMPRE estas cosas en una web de pruebas, no en producción.

En todo caso me pregunto dónde estará el límite de lo que las IAs pueden ofrecernos a nivel de programación. ¿Tú qué opinas?

4 comentarios en «Cómo escribir un plugin para WordPress con una inteligencia artificial»

    • Gracias por el comentario, Xavi. Y sí, de hecho esa es la idea que yo veo que cubre actualmente, pequeños ajustes o plugins muy concretos. Veremos cómo evoluciona todo esto 🙂

      Responder
  1. ¡Uff! Veo un agujero de seguridad importante en ese código… 😉

    Sin duda está bien, pero hay que ir con cuidado… puede ayudar mucho a comenzar algo, pero también hay que saber cómo programar con WordPress para no liarla.

    Responder
    • ¡Evidentemente! Esto es como dejar un robot al cuidado de los niños 😁
      De todas formas, si no vas a decir cuál es el agujero, tu comentario queda muy pobre jajaja «¡Alguien ha matado a alguien!» como decía Gila 😂

      Responder

Deja un comentario

Información sobre protección de datos

  • Responsable: Pablo Moratinos
  • Fin del tratamiento: Controlar el spam, gestión de comentarios
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  • Derechos: Acceso, rectificación, portabilidad, olvido.
  • Contacto: contacto@pablomoratinos.es.
  • Información adicional: Más información en mi política de privacidad.