Как заменить миниатюру записи в WordPress на видео?

2 янв. 2017 г., 13:05:45
Просмотры: 17.6K
Голосов: 2

Мне нужно заменить стандартные миниатюры записей на видео, если в записях содержится видео с YouTube, Vimeo или других видеохостингов, поддерживаемых WordPress.

Вот псевдокод, который я хочу использовать на кастомной странице:

if ( has_post_thumbnail( get_the_ID() ) {
    if ( has_video(псевдокод для проверки наличия youtube видео в записи) ) {
        // показать видео плеер
    } else {
        // показать стандартную миниатюру записи
    }
}

Есть какие-то советы?

4
Комментарии

Это зависит от вывода вашей темы. Вы всегда можете создать произвольное поле, которое будет хранить ссылку на видео, и встраивать его, если оно найдено в выводе вашей темы.

Tunji Tunji
2 янв. 2017 г. 13:10:05

Один совет - посмотрите на ваш single.php и найдите место, где выводится миниатюра. Вам нужно обернуть этот код в условие if/then, которое будет проверять: если есть видео (произвольное поле), то показывать видео вместо изображения. Без вашего кода или попыток решения, помочь больше не получится.

rudtek rudtek
2 янв. 2017 г. 19:56:54

Не совсем понятен вопрос. С какой конкретной проблемой вы столкнулись при попытке закодировать решение?

Mark Kaplun Mark Kaplun
2 янв. 2017 г. 20:27:36

@MarkKaplun Мне нужно заменить изображение записи (featured image) на моих страницах WordPress видеоплеером. Или автоматически переопределять любое существующее изображение записи видеоплеером, если в посте есть ссылка на YouTube. Теперь ясно? Спасибо!

Knott Knott
2 янв. 2017 г. 20:50:47
Все ответы на вопрос 2
1

Допустим для простоты, что вы используете ACF. После установки ACF вам нужно создать поле для ссылки на видео и назначить его для записей. Затем, в записи, где должно отображаться видео, добавьте URL. Обычно я назначаю это поле как текстовое и прошу пользователей вводить только ID YouTube (последнюю строку текста после ссылки youtube.com).

Например, если ссылка на видео такая: https://www.youtube.com/J-ek8drxFJA

пользователь должен ввести только J-ek8drxFJA в поле.

Теперь добавьте этот код в ваш файл single.php в папке дочерней темы:

Обратите внимание, что я изменил условие if. Нет необходимости искать миниатюру, если вы собираетесь использовать видео:

if( get_field( 'video_link' ) ) {
    echo 'это ID моего видео ' . get_field( 'video_link' );   // или вывести плеер (см. ниже)
} else {
    if( has_post_thumbnail( get_the_ID() ) ){
        // показать миниатюру записи
    }

    // нет видео или изображения
}

Конечно, если вы хотите показать само видео, вам нужно сделать примерно так:

if( get_field( 'video_link' ) ) {
    $videoid = get_field( 'video_link' );
    echo '<h2>Ссылка на видео</h2><p>смотрите наше видео:</p><iframe width="420" height="315" src="https://www.youtube.com/embed/' . $videoid . '" frameborder="0" allowfullscreen></iframe>';
} else {
    if( has_post_thumbnail( get_the_ID() ) ) {
        // показать миниатюру записи
    }
    
    // нет видео или изображения
} 

Очевидно, вы можете немного изменить код под свои нужды.

2 янв. 2017 г. 20:53:10
Комментарии

Хотя любые качественные ответы приемлемы, пожалуйста, учитывайте, что ответы, отсылающие пользователя к сторонним плагинам, иногда воспринимаются не очень хорошо. Подобные ответы имеют тенденцию порождать дополнительные вопросы относительно упомянутых сторонних плагинов, а такие вопросы считаются Не по Теме.

Howdy_McGee Howdy_McGee
2 янв. 2017 г. 22:40:08
0

Я думаю, вам стоит попробовать этот плагин: https://wordpress.org/plugins/featured-video-plus/

Если вы не хотите использовать дополнительные плагины, то обязательно изучите их код для примера. Вы можете просмотреть их код и адаптировать его под свои требования.

12 апр. 2018 г. 01:42:24