【WordPress】YouTubeの埋め込みが、ただのURLになってしまうケース

ホームページ作成
スポンサーリンク/Sponsored Link

WordPressのブロックエディターでは、YouTubeのURLを貼り付けるだけで、簡単に埋め込みができるようになりました。

ところが、一部の環境で、編集画面では正しく埋め込み再生されるのに、公開して表示すると、ただのURLになってしまうケースがありました。

↓ こんな感じです

 https://youtu.be/-Jf7Nu9aGqA 

原因を調べて、修正できましたので、メモとして投稿します。

スポンサーリンク/Sponsored Link

URLを埋め込みとして表示するには the_content()でなければならない

参考にさせていただいたのは、次の記事です。

WordPress への YouTube 動画の埋め込み(が上手く反映されないのでまいっている)が,解決した。
WordPress の Gutenberg(グーテンベルク)では,YouTube の URL を入力するだけで…

Youtubeの埋め込みを、埋め込みとして表示するには、single.phpなどの中の記述を

echo get_the_content();

ではだめで

the_content();

にする必要がある、ということでした。

クラシックエディターの改行を<br>に変換しているケースがややこしい

ここで、別の問題につきあたりました。

クラシックエディターで作成した過去のブログ投稿では、記事内の改行が改行として表示されないケースがあったため、nl2brを使って次のように書いてあったのです。

echo nl2br(get_the_content());

Youtubeの埋め込みのため、今後はブロックエディターに切り替えて記事を作成していくわけですが

単純に the_content(); に置き換えてしまうと、クラシックエディター時代の記事の表示が損なわれてしまいます。

はてどうする。再び調べました。

スポンサーリンク/Sponsored Link

記事ごとにブロックエディタかクラシックエディタか判定する

記事ごとに、ブロックエディターか、クラシックエディターか判定する方法がありました。

use_block_editor_for_post
bool use_block_editor_for_post( int | WP_Post $post ) 投稿がブロックエディターに対応しているか調べる。

この関数を使って、ブロックエディター以前と以後で振り分けを書くことができました。

if (have_posts()) : while (have_posts()) : the_post();

$post_id = get_the_ID();
if (use_block_editor_for_post($post_id)){
    the_content(); 
} else {
    echo nl2br(get_the_content()); 
}
endwhile; endif;

無事解決です。以前の記事の見た目を変えることなく、新しい記事だけ、YouTube埋め込み対応にすることができました。

パソコン教室・キュリオステーション志木店からのお知らせ
レッスンはオンラインで受講できます

パソコン教室・キュリオステーション志木店では、本年よりオンラインでの在宅レッスンを実施しております。
教室の全コースがオンラインで受講可能。実際にインストラクターがご対応いたします。
1時間の無料体験レッスンはいつでも予約できます。詳しくは公式ページをご覧ください。

スポンサーリンク/Sponsored Link
キュリオステーション志木店運営をフォローする

コメント

タイトルとURLをコピーしました