Shortcode de vídeo - reproducción automática de todos los vídeos

22 feb 2014, 16:34:17
Vistas: 19.7K
Votos: 1

¿Cómo puedo hacer que se reproduzcan automáticamente todos los vídeos añadidos mediante shortcode?
Solo puedo hacer que uno de ellos se reproduzca automáticamente si solo uno tiene el atributo autoplay establecido en 1 y los otros en 0, de lo contrario todos se detienen.

3
Comentarios

¿Por qué reproducirías múltiples videos al mismo tiempo?

s_ha_dum s_ha_dum
22 feb 2014 16:43:18

Los estoy usando como fondos en dos secciones..

Domagoj Domagoj
22 feb 2014 16:53:43

Existe la opción pauseOtherPlayers: false en mediaelement, pero ¿cómo pasarla desde WP?

Domagoj Domagoj
22 feb 2014 16:54:58
Todas las respuestas a la pregunta 4
1

Me encontré con este problema al intentar que los videos HTML se comportaran como GIFs. El reproductor de video integrado de WordPress utiliza elementos de video HTML pero no permite que los videos se reproduzcan simultáneamente.

En lugar de usar el reproductor de video predeterminado de WordPress (que es mejor para contenido de video más estándar), elegí usar manualmente el elemento <video> a través de un shortcode personalizado. Para la mejor compatibilidad (especialmente en móviles) también debemos asegurarnos de que los videos estén silenciados.

Después de agregar el siguiente código, simplemente usa:

[videogif mp4="http://ruta_al_archivo.mp4"]

Y tendrás un bonito video funcionando. Para controlar el estilo y agregar controles (básicos) de video HTML, usa algo como:

[videogif mp4="http://ruta_al_archivo.mp4" style='width: 80%' controls='1']

Código

Añade a tu functions.php:

// Shortcode de video GIF
function videogif($atts = [])
{
    // normalizar claves de atributos, a minúsculas
    $atts = array_change_key_case((array)$atts, CASE_LOWER);

    // sobrescribir atributos predeterminados con atributos de usuario
    $wporg_atts = shortcode_atts([
            'mp4' => $atts['mp4'],
            'style' => null,
            'controls' => False
        ], $atts);

    // construir salida
    $o = '';
    $o .= '<video autoplay loop muted playsinline ';
    if ($wporg_atts['controls']) $o .= 'controls ';
    $o .= 'class="videogif"';
    if (!is_null($wporg_atts['style'])) $o .= 'style="' . $wporg_atts['style'] . '" ';
    $o .= '><source src="' . $wporg_atts['mp4'] . '" type="video/mp4" />';
    $o .= '<p>Tu navegador no soporta el elemento de video.</p></video>';

    // devolver salida
    return $o;
}
add_shortcode( 'videogif', 'videogif' );

También uso el siguiente CSS para redimensionar y centrar los videos por defecto:

/* Centrar videogif por defecto */
.videogif {
    width: 100%;
    display:block;
    margin: 0 auto;
}
15 oct 2017 05:13:29
Comentarios

esto es perfecto pero ¿cómo agregar sonido?

Shafaq Shafaq
30 sept 2019 23:19:26
3

Podrías intentar usar el filtro shortcode_atts_video:

add_filter( 'shortcode_atts_video', 'sobreescribir_atts_video_wpse', 10, 3 );

function sobreescribir_atts_video_wpse( $out, $pairs, $atts )
{
    // forzar el atributo autoplay del shortcode de video a ON (activado):
    $out['autoplay'] = 1; 

    // forzar el atributo autoplay del shortcode de video a OFF (desactivado):
    //$out['autoplay'] = 0; 

    return $out;
}

para sobrescribir los atributos del shortcode [video].

22 feb 2014 17:15:05
Comentarios

El problema está en JS, el shortcode genera autoplay="1" en todos los shortcodes pero el reproductor se inicializa con $('.wp-video-shortcode').mediaelementplayer(settings); y necesito que se inicialice con $('.wp-video-shortcode').mediaelementplayer( {pauseOtherPlayers: false} ); Y ese JS está en el núcleo de WP

Domagoj Domagoj
22 feb 2014 17:18:50

Cuando agrego un solo shortcode en una publicación, todo funciona como se espera. Pero tan pronto como se agrega el segundo shortcode, entonces el autoplay ON no funciona para ningún reproductor (con o sin el filtro mencionado).

birgire birgire
22 feb 2014 18:27:10

Intenté modificar for(var j in mejs.players){var l=mejs.players[j];l.play(); } donde los l.id son como mep_0 y mep_1, pero eso no funcionó por alguna razón aunque no generó errores. ¿Viste esta pregunta, donde una de las soluciones sugeridas es activar clics para solucionarlo?

birgire birgire
22 feb 2014 20:20:05
0

Lo he hecho con mi propio shortcode de video, en el cual cambié las clases, así puedo iniciar el reproductor con $('.my-video-shortcode').mediaelementplayer( {pauseOtherPlayers: false} );
Hace exactamente lo que necesitaba :)

23 feb 2014 13:29:29
0

Me doy cuenta de que esta publicación es antigua, pero la respuesta de birgire ya no funciona.

En lugar de:

$out['autoplay'] = '1';

lo cual tiene sentido, en realidad debería ser:

$out['autoplay'] = 'on';

add_filter( 'shortcode_atts_video', 'overwrite_video_atts_wpse', 10,3 );

function overwrite_video_atts_wpse( $out, $pairs, $atts )
{
    // forzar el atributo de reproducción automática del shortcode de video a ON:
    $out['autoplay'] = 'on'; 

    // forzar el atributo de reproducción automática del shortcode de video a OFF:
    //$out['autoplay'] = 0; 

    return $out;
}
12 jul 2017 16:30:30