Shortcode video - redare automată pentru toate videoclipurile

22 feb. 2014, 16:34:17
Vizualizări: 19.7K
Voturi: 1

Cum pot să pornesc automat (autoplay) toate videoclipurile adăugate prin shortcode video?
Pot face doar unul dintre ele să pornească automat dacă doar unul are atributul autoplay setat la 1 și celelalte la 0, altfel toate sunt oprite.

3
Comentarii

De ce ai reda mai multe videoclipuri în același timp?

s_ha_dum s_ha_dum
22 feb. 2014 16:43:18

le folosesc ca fundaluri pe două secțiuni..

Domagoj Domagoj
22 feb. 2014 16:53:43

Există opțiunea pauseOtherPlayers: false în mediaelement, dar cum să o transmit din WP?

Domagoj Domagoj
22 feb. 2014 16:54:58
Toate răspunsurile la întrebare 4
1

Am întâmpinat această problemă încercând să fac videoclipurile HTML să se comporte ca GIF-uri. Player-ul video integrat al WordPress folosește elemente video HTML, dar nu permite redarea simultană a videoclipurilor.

În loc să folosesc player-ul video implicit al WordPress (care este mai potrivit pentru conținut video standard), am ales să folosesc manual elementul <video> prin intermediul unui shortcode personalizat. Pentru cea mai bună compatibilitate (mai ales pe dispozitive mobile), ar trebui să ne asigurăm că videoclipurile sunt și ele fără sunet.

După adăugarea următorului cod, pur și simplu folosește:

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

Și vei avea un videoclip care funcționează perfect. Pentru a controla stilizarea și a adăuga controale video HTML (de bază), folosește ceva de genul:

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

Cod

Adaugă în functions.php:

// Shortcode pentru video GIF
function videogif($atts = [])
{
    // normalizează cheile atributelor, lowercase
    $atts = array_change_key_case((array)$atts, CASE_LOWER);

    // suprascrie atributele implicite cu cele ale utilizatorului
    $wporg_atts = shortcode_atts([
            'mp4' => $atts['mp4'],
            'style' => null,
            'controls' => False
        ], $atts);

    // construiește output-ul
    $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>Browser-ul tău nu suportă elementul video.</p></video>';

    // returnează output-ul
    return $o;
}
add_shortcode( 'videogif', 'videogif' );

De asemenea, folosesc următorul CSS pentru a redimensiona și centra videoclipurile în mod implicit:

/* Centrează videogif în mod implicit */
.videogif {
    width: 100%;
    display:block;
    margin: 0 auto;
}
15 oct. 2017 05:13:29
Comentarii

este perfect, dar cum adaug sunet?

Shafaq Shafaq
30 sept. 2019 23:19:26
3

Puteți încerca să utilizați filtrul shortcode_atts_video:

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

function overwrite_video_atts_wpse( $out, $pairs, $atts )
{
    // forțează atributul autoplay al shortcode-ului video să fie activat:
    $out['autoplay'] = 1; 

    // forțează atributul autoplay al shortcode-ului video să fie dezactivat:
    //$out['autoplay'] = 0; 

    return $out;
}

pentru a suprascrie atributele shortcode-ului [video] shortcode.

22 feb. 2014 17:15:05
Comentarii

Problema este în JS, shortcode-ul afișează autoplay="1" pe toate shortcode-urile, dar player-ul este inițializat cu $('.wp-video-shortcode').mediaelementplayer(settings); și am nevoie să fie inițializat cu $('.wp-video-shortcode').mediaelementplayer( {pauseOtherPlayers: false} ); Iar acel JS este în nucleul WP

Domagoj Domagoj
22 feb. 2014 17:18:50

Când adaug un singur shortcode într-un articol, totul funcționează conform așteptărilor. Dar imediat ce adaug al doilea shortcode, atunci autoplay-ul ON nu mai funcționează pentru niciun player (cu sau fără filtrul menționat mai sus).

birgire birgire
22 feb. 2014 18:27:10

Am încercat să mă joc cu for(var j in mejs.players){var l=mejs.players[j];l.play(); } unde l.id sunt de genul mep_0 și mep_1, dar nu a funcționat din nu știu ce motiv, însă nu a generat niciun eroare. Ai văzut această întrebare, unde una dintre soluțiile sugerate este să declanșăm click-uri pentru a ocoli problema?

birgire birgire
22 feb. 2014 20:20:05
0

Am realizat acest lucru cu propriul meu shortcode pentru videoclipuri, în care am schimbat clasele, astfel încât să pot iniția playerul cu $('.my-video-shortcode').mediaelementplayer( {pauseOtherPlayers: false} );
Face exact ceea ce aveam nevoie :)

23 feb. 2014 13:29:29
0

Înțeleg că acest post este vechi, însă răspunsul lui birgire nu mai funcționează.

În loc de

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

care ar fi logic, ar trebui să fie:

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

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

function overwrite_video_atts_wpse( $out, $pairs, $atts )
{
    // forțează atributul autoplay al shortcode-ului video să fie ON:
    $out['autoplay'] = 'on'; 

    // forțează atributul autoplay al shortcode-ului video să fie OFF:
    //$out['autoplay'] = 0; 

    return $out;
}
12 iul. 2017 16:30:30