Cómo encontrar todos los vídeos que tienes en tu WordPress

Share to social media
Una pintura impresionista representa a un hombre de cabello gris despeinado que mira fijamente al suelo. Sostiene una lupa de latón, cuya superficie refleja la luz dispersa de la habitación, mientras busca algo entre el desorden. La habitación está llena de ordenadores antiguos, cables enredados y dispositivos electrónicos obsoletos, todo ello representado con pinceladas sueltas y texturizadas y una paleta de colores apagados de marrones, azules y verdes. Una luz suave y difusa se filtra a través de una ventana cercana, creando una atmósfera difusa y resaltando las motas de polvo que bailan en el aire.

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.

Captura de pantalla en la que se ve la salida del programa PHP que localiza en qué entradas o páginas hay vídeos de Vimeo.
Captura de pantalla en la que se ve la salida del programa PHP que localiza en qué entradas o páginas hay 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.

Captura del bloque de shortcode en el que está escrito el shortcode correspondiente al programa PHP que busca en la base de datos de WordPress todos los videos de Vimeo.
Captura del bloque de shortcode en el que está escrito el shortcode correspondiente al programa PHP que busca en la base de datos de WordPress todos los videos de Vimeo.

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

Una pintura impresionista representa a un hombre con un bigote pulcramente recortado y gafas, examinando atentamente el suelo con una lupa de latón vintage. Lleva una chaqueta de tweed y se encuentra de pie entre una caótica colección de ordenadores antiguos, placas de circuitos desmontadas y cables enredados esparcidos por un suelo de madera. La habitación está tenuemente iluminada por una única lámpara de escritorio, que proyecta largas sombras y resalta las motas de polvo que bailan en el aire. Una luz suave y difusa se filtra a través de una ventana cercana, aportando un aire etéreo a la escena.

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 😉 .

Resumir con tu IA favorita

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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Antonio Cambronero.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a GreenGeeks que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.