Flash in WordPress

Klar, die beste Lösung ist Flash nicht mehr zu verwenden oder gleich mit HTML5 (canvas) zu ersetzen. Manchmal bleibt der Einsatz von Flash alternativlos und wenn im Ausnahmefall Flash verwenden, dann richtig.

Aus Sicherheitsgründen verbietet es WordPress das Dateiformat SWF hochzuladen. Versucht man es trotzdem, erhält man eine Fehlermeldung, wie „Sorry, this file type is not permitted for security reasons.“. Um trotzdem Flash Dateien verwenden zu können, ist die functions.php mit dem entsprechenden mime type zu erweitern.:

function pixert_allow_swf($mimes) {
  if ( function_exists( 'current_user_can' ) )
    $unfiltered = $user ? user_can( $user, 'unfiltered_html' ) : current_user_can( 'unfiltered_html' );
    if ( !empty( $unfiltered ) ) {
      $mimes['swf'] = 'application/x-shockwave-flash';
    }
  return $mimes;
}
add_filter('upload_mimes','pixert_allow_swf');

An dieser Stelle sei ebenfalls auf den Artikel „How to allow WordPress to upload Flash SWF files“ verwiesen.

Um beim Flash-Einbetten Zeit zu sparen und mich nicht um einen validen HTML Code bemühen zu müssen, verwende ich das Plugin Anywhere Flash Embed von Suresh Kumar Mukhiya. Das Plugin ist im Gebrauch simpel und funktioniert über einen Shortcode. Mit Shortcode weniger Bewanderte, können über das Anywhere Flash Icon im WP Editor den Shortcode generieren lassen. Eine online Dokumentation des Plugins ist hier verfügbar.

Flash-Icon

Die Felder Flash Source Link, Höhe und Breite sind Pflicht – die weiteren sind optional.

Flash-Parameters

Ein generierter Shortcode mit zusätzlichen Flashparametern und Fehlermeldung könnte dann wie folgt aussehen:

[swf src="https://saswebnepal.org/upwork/BannerSnack-ad-336x280.swf" height="600" width="600" params="wpmode=direct&bgcolor=#8AC007" flashvars="start=Hello Flash&goodbye=By Flash"] Please Install Flash to See the Banner[ /swf]

Ich persönlich verwende anstatt einer Fehlermeldung gleich ein Ersatzbild – so wird dieses bei deaktiviertem oder fehlendem Flash angezeigt. Ausserdem verpacke ich den Shortcode noch, da das eingebettete Flash auch responsive sein soll.

Mein eingesetzten Code sieht dann wie folgt aus:

<div class="swf-wrapper">
[swf src="https://www.artanderror.net/erhardsigrist.ch/wp-content/uploads/2016/01/artanderror.swf" width="600" height="400" params="wpmode=direct&movie="artanderror.swf"]
<img class="screenshot" src="https://www.artanderror.net/erhardsigrist.ch/wp-content/uploads/2016/01/artanderror.png" alt="art and error" width="300" height="185" />
[/swf]
</div>

 
Dann fehlt nur noch das css, welches ich dem Stylesheet hinzufüge:

.swf-wrapper {
  position: relative;
  width: 100%;
  height: 0;
  padding-bottom: 75%; /* 4 : 3 */
}
.swf-wrapper object {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}