Shortcode de vídeo - reproducción automática de todos los vídeos
¿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.

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;
}

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

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

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

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?

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;
}
