J'ai un problème ici:
Je passe ceci à travers un champ personnalisé: http://www.youtube.com/watch?v=E6P1Q-UycHA&autoplay=1
(notez le autoplay=1
)
Mais lorsque je charge la vidéo sur mon thème à l'aide de wp_oembed_get ..., la vidéo s'affiche correctement, mais elle n'écoute pas la variable autoplay=1
que je suis en train de transmettre.
J'ai besoin des vidéos pour jouer sur le chargement de la page.
Des idées?
Merci Alain Fontaine
Ce ne sont pas vraiment des arguments comme pour YouTube, mais plutôt des arguments pour WordPress lui-même.
Une solution consiste à accéder à votre argument ultérieurement dans un filtre et à modifier la sortie HTML.
Passer le tableau des arguments:
wp_oembed_get( 'http://www.youtube.com/watch?v=', array( 'autoplay' => 1 ) );
Et filtrer:
add_filter('oembed_result','oembed_result', 10, 3);
function oembed_result($html, $url, $args) {
// $args includes custom argument
// modify $html as you need
return $html;
}
Je sais que cette question est assez ancienne, mais j’ai une solution efficace qui, je pense, pourrait être utile à tous ceux qui essaient de trouver cette information et ne consultent pas les recherches Google.
Cette solution a été testée dans WordPress 3.7.1+:
/**
* Adds the `autoplay` query string argument to embedded YouTube videos
*/
function wpse5362_autoplay_youtube_oembed( $provider, $url, $args ) {
if (strpos($provider, 'youtube')!==FALSE) {
$provider = add_query_arg('autoplay', 1, $provider);
}
return $provider;
}
add_filter('oembed_fetch_url', 'wpse5362_autoplay_youtube_oembed', 10, 3);
Ajoutez ce qui précède dans le functions.php
de votre thème pour que toutes les vidéos YouTube ajoutées via oEmbed soient lues automatiquement.
Dans class-oembed.php à la ligne 212, la méthode fetch()
applique le filtre oembed_fetch_url
pour autoriser les modifications de l'URL.
Pour éviter d'ajouter des paramètres inutiles à d'autres fournisseurs oEmbed, nous vérifions "youtube" dans l'URL du fournisseur. Nous pourrions également rechercher "vimeo" et/ou d'autres services vidéo. Si cette chaîne est présente, nous ajoutons un argument autoplay
au paramètre chaîne de requête.
Ceci est ma solution dans functions.php
function embed_responsive_autoplay($code){
if(strpos($code, 'youtu.be') !== false || strpos($code, 'youtube.com') !== false){
$return = preg_replace('@embed/([^"&]*)@', 'embed/$1&showinfo=0&autoplay=1', $code);
return '<div class="embed-container">' . $return . '</div>';
}
return '<div class="embed-container">' . $code . '</div>';
}
add_filter( 'embed_oembed_html', 'embed_responsive_autoplay');
add_filter( 'video_embed_html', 'embed_responsive_autoplay' ); // Jetpack
prendre plaisir
Poster ma réponse de https://stackoverflow.com/a/55053642/799327 , espérons que ça ira, car c'est du même OP: _
Ainsi, après quelques recherches à ce sujet, le meilleur moyen de le faire est d'utiliser le hook de filtre oembed_fetch_url
pour ajouter des arguments supplémentaires à l'URL de la requête oEmbed. Mon objectif spécifique était de permettre à un paramètre de lecture automatique, mais cette méthode est conçue pour être facile à adapter à tout argument oEmbed dont vous avez besoin.
Tout d'abord, ajoutez ceci à votre 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);
Cette fonction prend l'URL oEmbed générée et ses arguments correspondants et la vérifie en fonction d'une liste codée en dur des arguments figurant sur la liste blanche, dans ce cas ['autoplay']
. S'il voit l'un de ces mots clés figurant sur la liste blanche dans les arguments transmis au filtre oEmbed, il les ajoute avec leur valeur donnée à l'URL oEmbed.
Ensuite, tout ce que vous avez à faire est d’ajouter le paramètre oEmbed à votre shortcode dans l’éditeur Wordpress, comme ceci:
[embed autoplay="true"]https://vimeo.com/1234567890/1234567890[/embed]
Sachez que la classe oEmbed dans WP utilise postmeta comme cache pour ces demandes. Par conséquent, si vous avez déjà incorporé l'URL cible, vous devrez peut-être vider votre cache postmeta ou ajouter un cache buster d'une certaine sorte à l'URL cible. Si le lien est dans le cache, le hook de filtre ne pourra jamais être exécuté.
J'espère que cela a du sens, car je pense que c'est une fonctionnalité très utile qui est étonnamment difficile à comprendre.
Après toutes les recherches que j'ai trouvées est la suivante. ci-dessous est le code.
function iWeb_modest_youtube_player( $html, $url, $args ) {
return str_replace( '?feature=oembed', '?
feature=oembed&modestbranding=1&showinfo=0&rel=0', $html );
}
add_filter( 'oembed_result', 'iWeb_modest_youtube_player', 10, 3 );
Crédits à https://Gist.github.com/mustardBees/7704269#file-functions-php .
Merci!
Anything après le premier paramètre doit être envoyé sous forme de tableau d'arguments.
Voir l'exemple donné sur la page du codex.
http://codex.wordpress.org/Function_Reference/wp_oembed_get
Si vous essayez de prendre une valeur de champ personnalisé et de faire en sorte que le code incorporé le convertisse en vidéo (c.-à-d. Que se passerait-il si vous le plaçiez dans le contenu), alors vous pouvez faire quelque chose comme ça ...
/*
N - replace with a valid post ID
key - replace with a valid custom field key(name)
*/
$data = get_post_meta( N, 'key', true );
if( $data )
echo apply_filters( 'the_content', $data );
Bien sûr, cela va faire passer plusieurs filtres sur les données dont vous n’avez pas besoin, mais ça marche quand même.