Shortcode video - redare automată pentru toate videoclipurile
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.

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

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.

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

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

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?

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