web-dev-qa-db-fra.com

Lorsque oEmbed échoue, affichez une alternative

Je souhaite spécifier une autre image qui sera affichée en cas d'échec de l'intégration de oEmbed.

Le cas d'utilisation spécifique consiste à proposer une alternative lorsque la Chine (ou d'autres pays) bloque YouTube. Nous savons que le contenu de YouTube ne sera pas disponible là-bas, mais souhaitons fournir une autre image dans ce cas.

Le code d'erreur oEmbed peut-il être rendu accessible à cette fin?

8
Bob Easton

Je pense que la meilleure chose à faire dans ce cas consiste à envelopper votre contenu oEmbed avec une div avant leur rendu, puis à afficher une autre image avec la propriété CSS background-image. Si la vidéo est chargée, le contenu de oEmbed couvrira l'image d'arrière-plan.

Vous pouvez ajouter le wrapper à l'aide du filtre embed_oembed_html.

add_filter('embed_oembed_html', 'your_function_here');

Si le chargement d'éléments supplémentaires vous inquiète, vous pouvez effectuer une vérification côté client avec JS pour voir si oEmbed est chargé et, dans le cas contraire, charger une image d'arrière-plan dans le wrapper.

Vous pourriez être beaucoup plus compliqué en ajoutant des champs personnalisés pour chaque vidéo, mais c'est l'essentiel.

1
Daron Spence

Une solution pourrait consister à effectuer une autre requête en utilisant oEmbed côté serveur via un proxy basé en Chine.

Ainsi, vous saurez d'avance si l'appel de la ressource sur le client va échouer. Au début de la demande de page, vous pouvez déterminer l’emplacement géographique de l’adresse IP du client, passer un appel côté serveur via un proxy vers la ressource, par exemple youtube, puis exploiter l’erreur oEmbed que vous obtiendrez probablement.

Vous pouvez consulter Wonderproxy pour y parvenir (je ne suis pas affilié à eux, mais j'entends de bonnes choses)

0
codecowboy