Saltar navegación

[Resuelto] Auto extraer thumbnail de vimeo

This support ticket is created hace 6 años, 3 meses. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 -
- 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 -

Supporter timezone: Europe/London (GMT+00:00)

Etiquetado: ,

Este tema contiene 19 respuestas, tiene 2 mensajes.

Última actualización por nandomerino hace 6 años, 2 meses.

Asistido por: Nigel.

Autor
Mensajes
#1115781
shortcode-ok.png
shortcode-view.png

Buenas;

Quiero obtener de forma dinámica los thumbnail de vimeo de los videos que tengo insertados en las clases, tengo un código personalizado que me muestra mediante un shortcode el thumbnail, y funciona correctamente en una página normal (puedes verlo aquí)

Este shortcode lo que hace es que mediante un parámetro (la URL del video de vimeo) te muestra el thumbnail, pero cuando lo integro dentro de una view no es capaz de mostrarme los videos y no se cuál puede ser el problema...

Adjunto pantallazos del código que genera el shortcode y muestra el thumbnail mediante el parámetro que le pasas y otro pantallazo del mismo código modificado para que muestre el thumbnail utilizando el contenido de un campo personalizado que contiene la URL de vimeo.

#1115790

Se me olvidó enlazar la página donde el shortcode está funcionando usando un parámetro pasado mediante el shortcode enlace oculto

#1115791
Captura de pantalla 2018-09-26 a las 18.33.17.png

Y adjunto captura de la misma página que muestra el shortcode.

#1116164

Nigel
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/London (GMT+00:00)

Hola Nando

Según el tipo de campo, puede ser que types_render_field genera el campo formateado y no como URL.

Yo modificaría tu código así:

function get_vimeo_thumb( $atts =[] ){

	if ( isset( $atts['video'] ) ) {
		$vURL = $atts['video'];
	} elseif ( isset( $atts['field'] ) ) {
		global $post;
		$vURL = get_post_meta( $post->ID, $atts['field'], true );
	} else {
		return '';
	}

	// we have $vURL, continue...
}

Así puedes pasar al shortcode el atributo 'video' que contiene un URL actual, ó 'field' que es el clave de un campo de entrada que tiene el URL (recordando incluir el prefijo 'wpcf-' si es un campo de Types), así:

[vimeo video='<em><u>enlace oculto</u></em>

[vimeo field='wpcf-vimeourl']
#1116222

Gracias por tu aporta Nigel, pero no veo bien como continúa tu código con el mío, si pudieras escribirlo completo te lo agradecería enormemente.

Gracias,

#1116316

Nigel
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/London (GMT+00:00)

Puedes pegar el tuyo aquí para salvar a mis dedos? 🙂

#1116529

Si claro!

function get_vimeo_thumb($atts){
$p = shortcode_atts( array (
'vimeo' => '',
), $atts );

$vURL = $p['vimeo'];
$pieces = explode("/", $vURL);
$id = end($pieces);

$videoID = $id;
$jsonurl = 'enlace oculto'.$videoID.'.json';
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json,true);
return '<img src="'. $json_output[0]['thumbnail_large'] .'" />';
}
add_shortcode( 'vimeo', 'get_vimeo_thumb' );

#1117112

Nigel
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/London (GMT+00:00)

Hola Nando

Hice pocos cambios:

function get_vimeo_thumb( $atts =[] ){
 
    if ( isset( $atts['video'] ) ) {
        $vURL = $atts['video'];
    } elseif ( isset( $atts['field'] ) ) {
        global $post;
        $vURL = get_post_meta( $post->ID, $atts['field'], true );
    } else {
        return '';
    }
 
	$pieces = explode("/", $vURL);
	$videoID = end($pieces);

	$jsonurl = '<em><u>enlace oculto</u></em>'.$videoID.'.json';
	$json = file_get_contents($jsonurl,0,null,null);
	$json_output = json_decode($json,true);
	return '<img src="'. $json_output[0]['thumbnail_large'] .'" />';

}
add_shortcode( 'vimeo', 'get_vimeo_thumb' );

Para repetir, tiene dos modos de operación según el atributo pasado:

[vimeo video='<em><u>enlace oculto</u></em>
 
[vimeo field='wpcf-vimeourl']
#1117117
Captura de pantalla 2018-09-28 a las 13.27.32.png

He probado el código tal cuál pero parece que hay algún tipo de error, cuando lo copio en mi editor me señala un error, aunque no me dice cuál es... (adjunto captura) y cuando pongo el shortcode no me funciona de ninguna de las dos formas, me escupe un html con <img src="(unknow)">

#1117150

Nigel
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/London (GMT+00:00)

Screen Shot 2018-09-28 at 13.42.14.png

Me parece que el código ha confundido a nuestra foro, en el pantallazo tuyo veo "hidden link", que no aparece in mi código (lo cual es casi igual al tuyo).

Ve el pantallazo mio que puedes usar para confirmar como debe aparecer.

#1118213
Captura de pantalla 2018-10-01 a las 12.18.12.png

Buenas;
He probado el código y sigue habiendo un problema, cuando lo incluyo dentro de la view y le paso el campo con el enlace del video no muestra ninguna imagen...

Adjunto pantallazo con la parte de HTML que muestra la vista.

#1118269

Nigel
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/London (GMT+00:00)

Hola Nando

Vi lo mismo inicialmente, hasta que me di cuenta de que había olvidado el prefijo 'wpcf-' en el atributo field.

Recuerda que tiene dos modos de operación, así:

[vimeo video='<em><u>enlace oculto</u></em>
  
[vimeo field='wpcf-vimeourl']

Si prefieres podrías modificar el código para añadir el prefijo automáticamente.

#1118380
Captura de pantalla 2018-10-01 a las 16.23.52.png
Captura de pantalla 2018-10-01 a las 16.24.08.png
Captura de pantalla 2018-10-01 a las 16.25.07.png

Voy a poner pantallazos de todo lo que tengo, a ver si encontramos el fallo, ya que tengo puesto el prefijo pero aún así no aparece.

En los pantallazos aparecen el campo de type que almacena la URL de vimeo, la plantilla que utiliza la view y el código en el functions.php de mi tema.

#1119018

Nigel
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/London (GMT+00:00)

Pues, darme acceso al sitio, por favor.

Funciona en mi sitio y no veo nada diferente en los pantallazos que explica por que no funciona en el tuyo.

#1119158

Nigel
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/London (GMT+00:00)

Los credenciales de FTP no me dejan entrar, entonces no puedo ver los registros de errores.

He editado el shortcode para imprimir unos datos para ayudar identificar el problema.

¿Puedes inspeccionar el registro y dime lo que sale?