web-dev-qa-db-ja.com

wp_insert_post()でYouTubeを自動埋め込みする方法

私はこのコードを使用してWordpressに投稿を追加します。

$new_post = array(
    'post_title' => $title,
    'post_content' => "test   https://www.youtube.com/watch?v=4g3e8XwVIYc   https://youtu.be/LPpW_8c5jE4",
    'post_status' => 'publish',
    'post_author' => $author,
    'post_type' => 'post'
);
wp_insert_post($new_post, true);

問題は、YouTubeリンクが埋め込まれないことです。ただし、WordPress)に手動で投稿すると、リンクは自動的に埋め込まれます。

WordPressがYouTubeのURLを埋め込み動画に自動的に変換するために何をする必要がありますか?

このサイトからの別の回答では、wp_insert_post()を使用するように言われていますが、さまざまなYouTube URL構文があることを考慮して、投稿コンテンツからYouTube URLをどのように抽出しますか?埋め込みページWP Codexは、「ビデオURLをコンテンツ領域に配置する」と言っています。wp_insert_post()を使用するときにすべてのYouTubeビデオを自動的に埋め込む機能がないことに驚きます...私が何かを逃していない限り?

ありがとう

1
comdex

YouTubeのURLや投稿コンテンツにコンテンツを埋め込むその他のサービスは、 oEmbed と呼ばれる機能を介して機能します。これを機能させるには、wp_oembed_get()を使用して埋め込みコンテンツをフェッチする必要があります。

あなたのケースでは、コンテンツを直接挿入しているので、wp_oembed_get()を呼び出して1日だけ呼び出したくないでしょう。それはうまくいきません。 WordPressは投稿コンテンツをサポートするために組み込まれている関数を実行することをお勧めします。

_apply_filters( 'the_content', $content );
_

これは、テンプレートでthe_content()を出力したときに実行され、ショートコード拡張や埋め込み検出などが含まれます。ただし、コンテンツが正しい方法でフォーマットされている場合にのみ機能します。あなたは言った、「WP Codexの埋め込みページは、「ビデオURLをコンテンツ領域に入れる」と言っていますが、これは1つの明確化ポイントで正しいです:

URLがハイパーリンクではなく、独自の行にあることを確認してください。

挿入は次のようになります。

_$new_post = array(
    'post_title'   => $title,
    'post_content' => 'test
    https://www.youtube.com/watch?v=4g3e8XwVIYc
    https://youtu.be/LPpW_8c5jE4',
    'post_status'  => 'publish',
    'post_author'  => $author,
    'post_type'    => 'post',
);
wp_insert_post( $new_post, true );
_

投稿コンテンツの新しい行に注意してください。これにより、テンプレートに出力されるときに、これらのYouTubeのURLが適切な埋め込みに変換されます。

0
MikeNGarrett