Shortcode video - riproduzione automatica di tutti i video

22 feb 2014, 16:34:17
Visualizzazioni: 19.7K
Voti: 1

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.

3
Commenti

Perché dovresti riprodurre più video contemporaneamente?

s_ha_dum s_ha_dum
22 feb 2014 16:43:18

li sto usando come sfondi in due sezioni..

Domagoj Domagoj
22 feb 2014 16:53:43

C'è l'opzione pauseOtherPlayers: false in mediaelement, ma come passarla da WP?

Domagoj Domagoj
22 feb 2014 16:54:58
Tutte le risposte alla domanda 4
1

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;
}
15 ott 2017 05:13:29
Commenti

è perfetto ma come si aggiunge il suono?

Shafaq Shafaq
30 set 2019 23:19:26
3

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.

22 feb 2014 17:15:05
Commenti

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

Domagoj Domagoj
22 feb 2014 17:18:50

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

birgire birgire
22 feb 2014 18:27:10

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?

birgire birgire
22 feb 2014 20:20:05
0

Ho fatto questo con il mio shortcode video personalizzato, in cui ho modificato le classi, così posso avviare il lettore con $('.my-video-shortcode').mediaelementplayer( {pauseOtherPlayers: false} );
Fa esattamente ciò di cui avevo bisogno :)

23 feb 2014 13:29:29
0

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;
}
12 lug 2017 16:30:30