WordPress | 埋め込み用のoembedファイルをheadに出力する方法
WordPress(4.4~)が標準で出力するjson形式、xml形式のoembedデータファイルを<head>内に出力する方法について紹介しています。
通常、出力されるoembedファイル
<link rel="alternate" type="application/json+oembed" href="" />
<link rel="alternate" type="text/xml+oembed" href="" />
出力する機能を停止していなければ、2種のlink relタグが<head>内に出力されています。
調べても、これを消す方法はいくつも見つかりますが、WordPressが標準で出力するのだから当然ですが、出力する方法は全然出てきません。
oembedファイルが出力されない原因
原因を確認してみたら、利用しているテーマ「Luxeritas」のブログカードの機能を使っていて、かつ「直書きの URLをブログカード化する」を有効にしていると上記link relタグの出力も無効になっているようでした。
他の方達の「Luxeritas」を利用しているブログをいくつかチェックしてみると、やはり出力されていたりされていない事を確認。
「直書きの URLをブログカード化する」機能は凄く便利で、もしかテーマを変更する時にも記事データにあるのはショートコードでもなく直書きのURLなので対応がしやすいと考えます。
WordPressのoembed機能と手順が一緒なのでリンク生成としてはoembed機能が消えるのは当然です。
oembed用ファイルをheadに出力する方法
かといって「直書きの URLをブログカード化する」は外したくないので別で出力する方法を考えました。
link relタグをそのまま出力する
出てくるコードは固定なので直接書いても問題ありませんでした。
フロントページなど投稿ページ以外のページはアクセスしてもコードが生成されないので投稿ページだけで実行します。
他ページで生成されないのはWordPressの仕様みたいです。
function oembed_add()
{
if (is_singular()) {
echo '<link rel="alternate" type="application/json+oembed" href="' . esc_url(get_oembed_endpoint_url(get_permalink())) . '" /><link rel="alternate" type="text/xml+oembed" href="' . esc_url(get_oembed_endpoint_url(get_permalink(), 'xml')) . '" />';
}
}
add_action('wp_head', 'oembed_add');
wp_oembed_add_discovery_linksで出力する
remove_action()
関数で止められていると思われましたので、WP関数、wp_oembed_add_discovery_links()
を実行します。
これにより優先順序を初期値より遅い11にすることで表示されました。
add_action( 'wp_head', 'wp_oembed_add_discovery_links', 11);
ディスカッション
コメント一覧
まだ、コメントがありません