web-dev-qa-db-fra.com

Vidéo intégrée avec des légendes en turc

Normalement, j'intègre des vidéos en écrivant directement l'URL dans le code WP intégré [embed]. J'aime: [embed]https://www.youtube.com/watch?v=p_o4aY7xkXg[/embed]

Mais maintenant, je veux que cette vidéo s'ouvre automatiquement avec des sous-titres en turc, quelles que soient les préférences de l'utilisateur. Comment faire ça?

J'ai essayé de les ajouter à l'URL, mais aucun d'entre eux n'a fonctionné:

  • & yt: cc = on
  • & hl = tr
  • & cc_lang_pref = tr
  • & cc_load_policy = 1

Par exemple, pour les vidéos TED, j'y parviens en ajoutant "/ lang/tr /" à l'URL, comme ceci:

[embed]https://www.ted.com/talks/lang/tr/ken_robinson_says_schools_kill_creativity.html[/embed]

Une solution similaire pour Youtube? Ou d'autres suggestions?

Mise à jour: Je mets le code iframe directement dans la section "Texte" de l'éditeur Post. Ça marche. Exemple:

<iframe src="https://www.youtube.com/embed/1a8pI65emDE?rel=0&cc_load_policy=1&hl=tr" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

Cela ne fonctionne pas si vous le mettez dans l'éditeur visuel. Un peu déroutant pour les non-développeurs.

1
someka

Le problème, c’est que le point final oembed ne semble prendre en charge que les paramètres par défaut .

Il semble donc que tout ce que vous pouvez faire est d’analyser la réponse et d’ajouter vos paramètres à la variable iframesrc. Cela devrait le faire (non testé)

function wpse_218836_add_youtube_parameter( $return, $data, $url ){
    if ( $data->provider_name === 'YouTube'){
        $additional_parameters = '&cc_load_policy=1&hl=tr';
        return preg_replace('/src="(.*?)"/i', 'src="$1' . $additional_parameters . '"', $return);
    }else{
        return $return;
    }
}

add_filter('oembed_dataparse', 'wpse_218836_add_youtube_parameter', 10, 3);
2
kraftner