SEO対策

【問題】TwitterやYoutubeの自動埋め込みが機能しない【WordPress】

「Rich Text Tags, Categories, and Taxonomies」というプラグインをWordPressに入れて、カテゴリページにコンテンツを追加できるようにしましたが、TwitterやYoutubeのURLを貼ったときに、自動的に埋め込みがされませんでした。対処法を発見したのでメモとして残しておきます。

問題:oEmbedが動かず埋め込みが動作しない

TwitterやFacebookのURLを入力しても、投稿なら自動的に埋め込みに変換されて表示されるはずが、Rich Text Tags, Categories, and Taxonomiesを使ったカテゴリページへのコンテンツ表示だと、URLがむき出しに表示されてしまいました。

調べていると、WordPressにはoEmbedという機能があって、この機能が自動的に特定のサイトのURLだけ、自動的に埋め込み表示に変換しているようです。カテゴリページでoEmbedが動いていないので、埋め込みに変換されていません。

解決:add_filterでoEmbedを起動

普段、oEmbedは投稿や固定ページの「content」に対して起動しています。

しかし、今回私が使用した「Rich Text Tags, Categories, and Taxonomies」のプラグインのコードを見ると、カテゴリページに表示させるときに使用しているのは「term_description」でした。contentではないので、oEmbedが自動的に起動していません。

解決方法は、function.phpでadd_filterを使ってoEmbedをterm_descriptionでも起動することです。下記コードをfunction.phpに追記するだけで解決されました。

add_filter( 'term_description', array( $wp_embed, 'autoembed' ), 8 );

もし、TwitterやYoutubeなどのURL埋め込みが自動で動作しない場合は、その出力方法を探り(今回のterm_descriptionのように)、add_filterでoEmbedを起動してあげれば動作すると思われます。

※エンジニアではないため、情報に誤りがありましたら教えてください