Итак, после некоторого исследования этого, лучший способ сделать это - использовать хук фильтра oembed_fetch_url
, чтобы добавить дополнительные аргументы к URL-адресу запроса oEmbed. Моя конкретная цель состояла в том, чтобы разрешить параметр autoplay, но этот метод создан так, чтобы его можно было легко адаптировать к любому аргументу oEmbed, который вам нужен.
Сначала добавьте это к своему 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);
Эта функция принимает сгенерированный URL-адрес oEmbed и соответствующие ему аргументы и проверяет его снова в жестко запрограммированном списке аргументов в белом списке, в данном случае ['autoplay']
. Если он видит какое-либо из этих ключевых слов в белом списке в аргументах, передаваемых фильтру oEmbed, он добавляет их с заданным значением в URL-адрес oEmbed.
Затем все, что вам нужно сделать, это добавить параметр oEmbed в ваш шорткод в редакторе Wordpress, например:
[embed autoplay="true"]https://vimeo.com/1234567890/1234567890[/embed]
Имейте в виду, что класс oEmbed в WP использует postmeta в качестве кеша для этих запросов, поэтому, если вы уже встроили целевой URL-адрес ранее, вам, возможно, придется каким-то образом очистить кеш postmeta или добавить уничтожитель кеша некоторых добро на целевой URL. Если ссылка находится в кеше, фильтр-хук никогда не запустится.
Надеюсь, это имеет смысл, поскольку я чувствую, что это довольно полезная функция, на удивление сложно понять, как ее достичь.