Mit der DSGVO sind einige Dinge ins Rollen gebracht worden. Eines dieser Dinge ist bspw. die Einbindung von YouTube-Videos. Der Nutzer muss vor der Einbindung eines Videos immer erst zustimmen, dass etwas eingebunden werden soll. Nützlich ist hier das Finden von YouTube-Links, um diese dann in einen Shortcode umzuwandeln. In diesem Beitrag findest du einen Ausdruck, mit dem du die IDs in einem String findest.
IDs finden
[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)
Dies kannst du verwenden, um bspw. mit preg_match
oder preg_raplace
alle IDs zu erhalten, die in einem String sind.
Beispiel: regex101
IDs finden, die nicht in einem Link sind
<a.*?<\/a>(*SKIP)(*F)|[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)
Code-Sprache: JavaScript (javascript)
Mit diesem Ausdruck werden nur die IDs zurückgegeben, die nicht in einem a-Tag sind. Das ist vorwiegend bei einem preg_replace
nützlich, der dann alle Links mit einem iframe
ersetzen soll. So werden dann auch wirklich nur die Links ersetzt, die nicht in einem a-Tag sitzen.
Beispiel: regex101
YouTube-Shortcode für WordPress
add_shortcode('youtube', function ($atts, $content) {
$replaced = false;
if (false === strpos($content, 'http')) {
$replaced = true;
$content = 'https://www.youtube.com/embed/' . $content;
}
if (false === $replaced) {
parse_str( parse_url( $content, PHP_URL_QUERY ), $params );
if (isset($params['v'])) {
$content = 'https://www.youtube.com/embed/' . $params['v'];
}
}
$result = sprintf(
'<iframe width="948" height="533" src="%s" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
$content
);
return $result;
});
Code-Sprache: PHP (php)
Mit diesem Code lässt sich jetzt ein YouTube-Link in ein iFrame verwandeln, wenn du den Link in den Shortcode [[youtube][/youtube]]
setzt.
Alle YouTube-Links im Inhalt mit Shortcode ersetzen
add_filter('the_content', function ($content) {
$regex = "/\s*<a.*?<\/a>(*SKIP)(*F)|[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i";
return preg_replace($regex, '[[youtube]$2[/youtube]]', $content);
});
Code-Sprache: PHP (php)
Jetzt werden alle YouTube-Links, die nicht in einem a-Tag stecken, mit dem Shortcode ersetzt, der dann das Video einbettet. Du kannst das jetzt noch anpassen, um es mit deinem Cookie-Plugin umzuwandeln. Hier ein Beispiel für Borlabs:
add_filter('the_content', function ($content) {
$regex = "/\s*<a.*?<\/a>(*SKIP)(*F)|[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i";
return preg_replace($regex, '[[borlabs-cookie type="content-blocker"][youtube]$2[/youtube][/borlabs-cookie]]', $content);
});
Code-Sprache: PHP (php)
Jetzt werden alle Links ersetzt, ein YouTube-Video eingebettet und der Borlabs-Shortcode eingesetzt, damit zuerst ein Inhaltsblockierer erscheint, bevor das Video geladen wird.
[borlabs-cookie type=“content-blocker“][youtube]https://www.youtube.com/watch?v=dEru8lRHuLo[/youtube][/borlabs-cookie]