web-dev-qa-db-ja.com

OEmbedが失敗したときは、代替案を表示する

OEmbedが失敗したときに表示される代替画像を指定したいです。

具体的なユースケースは、中国(または他の国)がYouTubeをブロックしたときに代替手段を提供することです。 YouTubeコンテンツはそこでは利用できないことを知っていますが、その場合は代替画像を提供したいと考えています。

この目的のためにoEmbedエラーコードにアクセスできるようにすることはできますか?

8
Bob Easton

この場合は、oEmbedコンテンツをレンダリングする前にdivでラップしてから、CSSのbackground-imageプロパティで代替画像を表示するのが最善の方法です。ビデオが読み込まれると、oEmbedコンテンツが背景画像を覆います。

embed_oembed_htmlフィルタを使用してラッパーを追加できます。

add_filter('embed_oembed_html', 'your_function_here');

追加の要素をロードすることが心配な場合は、oEmbedがロードされたかどうかを確認するためにJSを使用してクライアント側でチェックを行い、ロードされていない場合は背景画像をラッパーにロードします。

各ビデオにカスタムフィールドを追加すると、はるかに複雑になる可能性がありますが、それが基本的な要点です。

1
Daron Spence

1つの方法は、中国を拠点とするプロキシを介してサーバー側でoEmbedを使用して別の要求を出すことです。

こうすれば、クライアント上のリソースへの呼び出しが失敗するかどうかを事前に知ることができます。ページリクエストの早い段階で、クライアントのIPが地理的にどこにあるのかを確認し、プロキシ経由でリソース、たとえばyoutubeにサーバーサイドの呼び出しを行い、次に予想されるエラーを活用することができます。

Wonderproxy これを達成するための/を見ることができます(私はそれらと提携していませんが、良いことを聞いています)

0
codecowboy