it-swarm.com.de

Video-Shortcode - Automatische Wiedergabe aller Videos

Wie kann ich alle per Video-Shortcode hinzugefügten Videos automatisch abspielen lassen?
Ich kann nur eine davon automatisch abspielen lassen, wenn nur für eine das Attribut "Automatisch abspielen" auf 1 und für die anderen auf 0 festgelegt ist. Andernfalls werden alle angehalten.

1
Domagoj

Ich habe dies mit meinem eigenen Video-Shortcode gemacht, in dem ich die Klassen gewechselt habe, damit ich den Player mit $('.my-video-shortcode').mediaelementplayer( {pauseOtherPlayers: false} ); starten kann.
Es tut was ich brauchte :)

0
Domagoj

Ich bin auf dieses Problem gestoßen, als ich versucht habe, HTML-Videos so zu gestalten, dass sie sich wie GIFs verhalten. Der in WordPress integrierte Videoplayer verwendet HTML-Videoelemente, ermöglicht jedoch nicht die gleichzeitige Wiedergabe von Videos.

Anstatt den standardmäßigen WordPress-Videoplayer zu verwenden (der am besten für Standardvideoinhalte verwendet wird), habe ich mich dafür entschieden, das Element <video> manuell über einen benutzerdefinierten Shortcode zu verwenden. Um die bestmögliche Kompatibilität zu erzielen ( insbesondere bei Mobiltelefonen ), sollten wir auch sicherstellen, dass die Videos ebenfalls stumm geschaltet sind.

Nachdem Sie den folgenden Code hinzugefügt haben, verwenden Sie einfach:

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

Und du wirst ein schönes Video haben. Verwenden Sie zum Steuern des Stils und Hinzufügen von (grundlegenden) HTML-Video-Steuerelementen Folgendes:

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

Code

Fügen Sie zu Ihrem functions.php hinzu:

// Video gif shortcode
function videogif($atts = [])
{
    // normalize attribute keys, lowercase
    $atts = array_change_key_case((array)$atts, CASE_LOWER);

    // override default attributes with user attributes
    $wporg_atts = shortcode_atts([
            'mp4' => $atts['mp4'],
            'style' => null,
            'controls' => False
        ], $atts);

    // build output
    $o = '';
    $o .= '<video autoplay loop muted ';
    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>Your browser does not support the video element.</p></video>';

    // return output
    return $o;
}
add_shortcode( 'videogif', 'videogif' );

Ich verwende außerdem das folgende CSS, um die Größe der Videos zu ändern und sie zu zentrieren:

/* Center videogif by default */
.videogif {
    width: 100%;
    display:block;
    margin: 0 auto;
}
1
Peter Moran

Sie können versuchen, den shortcode_atts_video-Filter zu verwenden:

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

function overwrite_video_atts_wpse( $out, $pairs, $atts )
{
    // force the autoplay video shortcode attribute to ON:
    $out['autoplay'] = 1; 

    // force the autoplay video shortcode attribute to OFF:
    //$out['autoplay'] = 0; 

    return $out;
}

um die [video]shortcode Attribute zu überschreiben.

0
birgire

Mir ist klar, dass dieser Beitrag alt ist, aber die Antwort von Birgire funktioniert nicht mehr

Anstatt

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

was sinnvoll ist, sollte es eigentlich sein

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

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

function overwrite_video_atts_wpse( $out, $pairs, $atts )
{
    // force the autoplay video shortcode attribute to ON:
    $out['autoplay'] = 'on'; 

    // force the autoplay video shortcode attribute to OFF:
    //$out['autoplay'] = 0; 

    return $out;
}
0
tjhole