Как автоматически встроить 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...если только я чего-то не упускаю?
Спасибо
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 в соответствующие вставки, когда они выводятся в вашем шаблоне.