
Con miles de entradas en un sitio web de WordPress como puede ser el de Blogpocket, es una tarea ardua el saber en dónde tienes, por ejemplo, vídeos de YouTube o de Vimeo. En esta guía, te voy a enseñar un método, basado en programación PHP, y con la ayuda de ChatGPT, para encontrar un determinado literal dentro de la base de datos, lo que te serviría no solo para buscar vídeos sino para localizar cualquier otra cosa.
En primer lugar, te muestro la salida del programa que vamos a utilizar para encontrar vídeos de Vimeo.

Los links te ayudarán, por ejemplo, a ubicar el vídeo dentro de Vimeo; y el título del post y su URL a encontrar la publicación concreta en la que está el vídeo incrustado.
Pero lo que vamos a hacer es utilizar un programa en PHP, que puedes descargar desde mi perfil de GitHub, para crear un shortcode que podrás incluir en cualquier publicación de tu WordPress. Se recomienda probar el programa en un entorno de pruebas, antes de utilizarlo en un entorno real (o de producción).
Plugin para encontrar vídeos de Vimeo
En realidad, el programa es un mu-plugin (must-use plugin). En WordPress, los plugins imprescindibles (a menudo llamados mu-plugins) son un tipo especial de plugin que se activan automáticamente y no se pueden desactivar desde el panel de administración. Se utilizan para código que debe ejecutarse de forma consistente en toda la instalación de WordPress, garantizando así que las funcionalidades esenciales estén siempre activas. En nuestro caso no es imprescindible que el plugin sea un mu-plugin.
El plugin lo que hace es crear un short-code (código corto) para que pueda ser insertado en cualquier post o página.
En la siguiente imagen se muestra el shortcode concreto ([vimeo-posts-list]) insertado en una publicación de WordPress.

El programa en cuestión busca vídeos de Vimeo con alguno de los siguientes formatos:
- URLs tradicionales con ID numérico: https://vimeo.com/<id>
- URLs personalizadas que incluyen el segmento «blogpocket»: https://vimeo.com/<segmento>/alguna-cosa
Pero vamos a ayudarte a modificar el programa para encontrar cualquier otra cosa (vídeos de YouTube, por ejemplo).
Lo primero que hay que fijarse en el código del plugin es que tiene dos partes claramente diferenciadas: primero, el fragmento de MySQL donde se seleccionan las publicaciones (posts y páginas) que contenga una expresión regular concreta; en nuestro caso vimeo.com/loquesea o vimeo.com/unsegmento/loquesea:
$query = "
SELECT ID, post_title, post_content
FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type IN ('post','page')
AND post_content REGEXP 'https://vimeo\\\\.com/([0-9]+|$segment/[^[:space:]]+)'
";
Y segundo, el fragmento donde se crea el array con la información (link al vídeo en Vimeo, título del post y link al post) que también posee una expresión regular para seleccionar posibles variaciones de la URL: vimeo.com/loquesea o vimeo.com/unsegmento/loquesea.
$pattern = "/https:\/\/vimeo\.com\/(?:[0-9]+|{$match}\/[^\s\"'<>]+)/";
if (preg_match_all($pattern, $post->post_content, $matches)) {
// Filtramos duplicados en el mismo post
$unique_vimeo_urls = array_unique($matches[0]);
foreach ($unique_vimeo_urls as $vimeo_url) {
$posts_with_vimeo[] = array(
'vimeo_url' => $vimeo_url,
'title' => $post->post_title,
'permalink' => get_permalink($post->ID)
);
}
}
Utilizando ChatGPT para modificar el plugin de búsqueda de vídeos de Vimeo y encontrar los de YouTube

No hace falta entrar demasiado en detalles. Lo único que debemos saber es construir el valor de REGEXP y de la variable $pattern, en ambos casos respectivamente.
Vamos a utilizar ChatGPT como ayudante y le pediremos, para la expresión regular REGEXP de YouTube lo siguiente (puedes ver el prompt aquí).
Tengo la siguiente consulta en un script PHP: $query = "
SELECT ID, post_title, post_content
FROM $wpdb->posts
WHERE post_status = 'publish'
AND post_type IN ('post','page')
AND post_content REGEXP {valor}
"; Quiero que me des lo que tengo queponer en {valor} para buscar las publicaciones que sean URLs de YouTube pero solo las URLs del estilo youtube.com/loquesea (con o sin www) y youtu.be/loquesea.
Y para el valor de la variable $pattern (tienes el prompt aquí):
Tengo el siguiente código en un script PHP: if ($results) {
foreach ($results as $post) {
$pattern = {valor};
if (preg_match_all($pattern, $post->post_content, $matches)) {
// Filtramos duplicados en el mismo post
$unique_youtube_urls = array_unique($matches[0]);
foreach ($unique_youtube_urls as $youtube_url) {
$posts_with_youtube[] = array(
'youtube_url' => $youtube_url,
'title' => $post->post_title,
'permalink' => get_permalink($post->ID)
);
}
}
}
} Quiero que me des lo que tengo que poner en {valor} para seleccionar aquellas URLs de YouTube con el siguiente patrón: youtube.com/loquesea (con o sin www) y youtu.be/loquesea
El resto de los cambios en el código es elemental, cambiando todas las referencias a vimeo por youtube. Hasta podías dejar la creación de la variable $segment, que no es necesaria, pero que no se utiliza en el código.
He querido mostrar cómo podemos ayudarnos de ChatGPT para realizar pequeños cambios en plugins; pero en según qué casos puede ser más rentable empezar de cero con ChatGPT.
En el caso de vídeos de YouTube, a lo mejor habría que tener también en cuenta los vídeos incrustados, donde las URLs son del tipo https://www.youtube.com/embed/loquesea o https://www.youtube-nocookie.com/embed/loquesea.
Finalmente, te muestro el prompt que utilicé para crear el plugin para Vimeo por si te sirve de inspiración para empezar.
¿Podemos escribir un script en PHP para WordPress en el que busquemos en la base de datos de posts un literal que tenga esta estructura "https://vimeo.com/loquesea"; es decir URLS de vídeos de Vimeo y el resultado sea una lista de permalinks más el título de post donde aparezca esa URL?
Por supuesto, eso solo fue una primera indicación. Después tuvimos que trabajar juntos codo con codo para depurar y ajustar el código hasta obtener una primera versión aceptable. Recuerda que, en IA, cuanto más preciso es el prompt, mejores son los resultados.
Reflexiones finales
Lo importante son los dos prompts utilizados para buscar información en la base de datos de tus publicaciones. El resto del código puede servir completamente, cambiando los nombres de las variables y las referencias en los comentarios. Por ejemplo, si quisieras emplear el código propuesto para buscar imágenes, solo tendrías que ir a ChatGPT y escribir algo parecido al siguiente prompt, tanto para REGEXP como para $pattern:
Quiero que me des lo que tengo queponer en {valor} para buscar las publicaciones que contengan imágenes; es decir que en el código exista la etiqueta HTML de las imágenes: <img
Espero que esta guía para encontrar los vídeos que tienes en tu WordPress, o cualquier otra cosa, te sea útil y leo tus comentarios. Aunque hay que tener conocimientos de programación, el enfoque de esta guía ha sido más bien no-code 😉 .
Si no ves el prompt autocompletado o ves el de una ejecución anterior (o aparece la página de acceso), el texto ya está copiado. Solo pégalo.
En Blogpocket se promueve un uso ético y responsable de la IA

Deja una respuesta