Как автоматически встроить youtube с помощью сообщения вставки wp()


Я использую этот код для добавления записи в 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 автоматически преобразовывал URL YouTube во встроенные видео?

Другой ответ с этого сайта гласит, что нужно использовать wp_insert_post(), но как бы я извлек URL-адрес youtube из содержимого публикации, учитывая существуют различные синтаксисы URL-адресов youtube. Встраиваемая страница в Кодексе WP гласит, что нужно просто поместить "URL-адрес видео в область содержимого". Я удивлен, что при использовании wp_insert_post() нет функции для автоматического встраивания всех видео YouTube...если только я чего-то не упускаю?

Спасибо

Author: comdex, 2019-04-12

1 answers

URL-адреса Youtube и другие сервисы, которые встраивают контент в публикуемый контент, работают с помощью функции oEmbed. Вам нужно использовать wp_oembed_get() для извлечения встроенного содержимого, чтобы это работало.

В вашем случае вы вставляете контент напрямую, поэтому, вероятно, вы не хотите просто позвонить wp_oembed_get() и закончить на этом. Это не сработает. Лучше запускать функции, встроенные в WordPress для поддержки публикации контента.

apply_filters( 'the_content', $content );

Это выполняется при выводе the_content() в вашем шаблоне и включает такие вещи, как расширение шорткода и обнаружение oembed. Но это работает только в том случае, если ваш контент отформатирован правильно. Вы сказали: "Встраиваемая страница в Кодексе WP говорит просто поместить "URL-адрес видео в область содержимого", что правильно с одним уточняющим моментом:

Убедитесь, что 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 );

Обратите внимание на новые строки в содержании вашего поста. Это преобразует эти URL-адреса YouTube в соответствующие вставки, когда они выводятся в вашем шаблоне.

 0
Author: MikeNGarrett, 2019-04-12 13:09:02