Cross-Posting meiner Antwort von https://stackoverflow.com/a/55053642/799327 , hoffe, das ist in Ordnung, da es aus dem gleichen OP stammt:
Nach einigen Recherchen besteht der beste Weg, dies zu tun, darin, den oembed_fetch_url
Filter-Hook zu nutzen, um der oEmbed-Anforderungs-URL zusätzliche Argumente hinzuzufügen. Mein spezifisches Ziel war es, einen Autoplay-Parameter zuzulassen, aber diese Methode ist so aufgebaut, dass sie leicht an jedes von Ihnen benötigte oEmbed-Argument angepasst werden kann.
Fügen Sie dies zunächst zu Ihrem hinzu functions.php
:
<?php
/**
* Add parameters to embed
* @src https://foxland.fi/adding-parameters-to-wordpress-oembed/
* @src https://github.com/WordPress/WordPress/blob/ec417a34a7ce0d10a998b7eb6d50d7ba6291d94d/wp-includes/class-oembed.php#L553
*/
$allowed_args = ['autoplay'];
function koa_oembed_args($provider, $url, $args) {
global $allowed_args;
$filtered_args = array_filter(
$args,
function ($key) use ($allowed_args) {
return in_array($key, $allowed_args);
},
ARRAY_FILTER_USE_KEY
);
foreach ($filtered_args as $key => $value) {
$provider = add_query_arg($key, $value, $provider);
}
return $provider;
}
add_filter('oembed_fetch_url', 'koa_oembed_args', 10, 3);
Diese Funktion verwendet die generierte oEmbed-URL und die entsprechenden Argumente und überprüft sie in diesem Fall anhand einer fest codierten Liste von Argumenten auf der Whitelist ['autoplay']
. Wenn eines dieser Schlüsselwörter in der Whitelist in den an den oEmbed-Filter übergebenen Argumenten angezeigt wird, werden sie mit dem angegebenen Wert zur oEmbed-URL hinzugefügt.
Anschließend müssen Sie nur noch den Parameter oEmbed zu Ihrem Shortcode im Wordpress-Editor hinzufügen:
[embed autoplay="true"]https://vimeo.com/1234567890/1234567890[/embed]
Beachten Sie, dass die oEmbed-Klasse in WP das Postmeta als Cache für diese Anforderungen verwendet. Wenn Sie also die Ziel-URL zuvor eingebettet haben, müssen Sie möglicherweise Ihren Postmeta-Cache auf irgendeine Weise leeren oder dem Cache-Buster eine Art hinzufügen Ziel-URL. Wenn sich der Link im Cache befindet, wird der Filter-Hook niemals ausgeführt.
Ich hoffe, dass dies sinnvoll ist, da ich der Meinung bin, dass es eine ziemlich nützliche Funktion ist, die überraschend schwer herauszufinden ist, wie man sie erreicht.