Shortcode video - riproduzione automatica di tutti i video
Come posso attivare la riproduzione automatica per tutti i video aggiunti tramite shortcode video?
Riesco a far partire in automatico solo uno di essi se ha l'attributo autoplay impostato a 1 e gli altri a 0, altrimenti tutti rimangono fermi.

Mi sono imbattuto in questo problema mentre cercavo di far comportare i video HTML come GIF. Il lettore video integrato di WordPress utilizza elementi video HTML ma non consente la riproduzione simultanea dei video.
Invece di utilizzare il lettore video predefinito di WordPress (che è più adatto per contenuti video standard), ho scelto di utilizzare manualmente l'elemento <video>
tramite uno shortcode personalizzato. Per la migliore compatibilità (specialmente sui dispositivi mobili) dovremmo anche assicurarci che i video siano muti.
Dopo aver aggiunto il seguente codice, basta usare:
[videogif mp4="http://percorso_al_file.mp4"]
E avrete un bel video funzionante. Per controllare lo stile e aggiungere controlli HTML (di base) al video, usate qualcosa come:
[videogif mp4="http://percorso_al_file.mp4" style='width: 80%' controls='1']
Codice
Aggiungete al vostro functions.php
:
// Shortcode per video gif
function videogif($atts = [])
{
// normalizza le chiavi degli attributi, in minuscolo
$atts = array_change_key_case((array)$atts, CASE_LOWER);
// sovrascrive gli attributi predefiniti con quelli dell'utente
$wporg_atts = shortcode_atts([
'mp4' => $atts['mp4'],
'style' => null,
'controls' => False
], $atts);
// costruisce l'output
$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>Il tuo browser non supporta l\'elemento video.</p></video>';
// restituisce l'output
return $o;
}
add_shortcode( 'videogif', 'videogif' );
Utilizzo anche il seguente CSS per ridimensionare e centrare i video di default:
/* Centra i videogif di default */
.videogif {
width: 100%;
display:block;
margin: 0 auto;
}

Potresti provare a utilizzare il filtro shortcode_atts_video
:
add_filter( 'shortcode_atts_video', 'overwrite_video_atts_wpse', 10,3 );
function overwrite_video_atts_wpse( $out, $pairs, $atts )
{
// forza l'attributo autoplay dello shortcode video su ON:
$out['autoplay'] = 1;
// forza l'attributo autoplay dello shortcode video su OFF:
//$out['autoplay'] = 0;
return $out;
}
per sovrascrivere gli attributi dello [video]
shortcode.

Il problema è in JS, lo shortcode restituisce autoplay="1" su tutti gli shortcode ma il player viene inizializzato con
$('.wp-video-shortcode').mediaelementplayer(settings);
e ho bisogno che venga inizializzato con
$('.wp-video-shortcode').mediaelementplayer( {pauseOtherPlayers: false} );
E quel js è nel core di WP

Quando aggiungo un singolo shortcode in un post, tutto funziona come previsto. Ma non appena viene aggiunto il secondo shortcode, allora l'autoplay ON non funziona per nessun player (con o senza il filtro sopra).

Ho provato a giocare con for(var j in mejs.players){var l=mejs.players[j];l.play(); }
dove gli l.id
sono tipo mep_0
e mep_1
, ma non ha funzionato per qualche motivo senza generare errori. Hai visto questa domanda, dove una delle soluzioni suggerite è triggerare dei click per aggirare il problema?

Mi rendo conto che questo post sia vecchio, ma la risposta di birgire non funziona più
Invece di
$out['autoplay'] = '1';
che avrebbe senso, dovrebbe essere in realtà
$out['autoplay'] = 'on';
add_filter( 'shortcode_atts_video', 'overwrite_video_atts_wpse', 10,3 );
function overwrite_video_atts_wpse( $out, $pairs, $atts )
{
// forza l'attributo autoplay dello shortcode video su ON:
$out['autoplay'] = 'on';
// forza l'attributo autoplay dello shortcode video su OFF:
//$out['autoplay'] = 0;
return $out;
}
