Покопавшись в гугле, я не смог найти подробного туториала под нужды микроразметки вставляемого видео из ютуба на сайт. Да такого, чтоб раз поставил и забыл. Пришлось самому разбираться. Значится, на чистоту кода я не претендую, главное – работает. Мой пример делает следующие вещи:
- Берёт id видео из адресной строки самого видео.
- Вставляет, собственно, само видео.
- Прописывает мета данные видеоролика, получаемые на основе api ютуба.
<?php //получили ссылку видео из произвольного поля $videourl = get_post_meta($post->ID, 'video_url', true); if(videourl){ //вытащили ID видео $IDvideo = substr(strstr($videourl, '='), 1, strlen($videourl)); // Полезли в API Youtube, чтобы получить длительность видео $getJSON = "https://www.googleapis.com/youtube/v3/videos?id=".$IDvideo."&part=contentDetails&key=ВАШ_КЛЮЧ_API"; $data = file_get_contents($getJSON); $time = json_decode($data, true); $timevideo = $time['items'][0]['contentDetails']['duration']; // Полезли в API Youtube, чтобы получить дату постинга видео $getJSONdate = "https://www.googleapis.com/youtube/v3/videos?id=".$IDvideo."&part=snippet&key=ВАШ_КЛЮЧ_API"; $datapost = file_get_contents($getJSONdate); $timepost = json_decode($datapost, true); $imgWidth = $timepost['items'][0]['snippet']['thumbnails']['maxres']['width']; $imgHeight = $timepost['items'][0]['snippet']['thumbnails']['maxres']['height']; $datepost = $timepost['items'][0]['snippet']['publishedAt']; //колдуем с форматом даты $timev = strtotime($datepost); $yearv = date( 'Y',$timev ); # Получаем год $monthv = date( 'm',$timev ); # Получаем месяца $dayv = date( 'd',$timev ); # С помощью функции date() получаем число дня $datev = "$yearv-$monthv-$dayv"; # Выходная дата в формате Y-m-d ?> <div itemscope itemtype="http://schema.org/VideoObject"> <div style="display:none;"> <meta itemprop="description" content="<?php echo get_the_excerpt(); ?>"> <meta itemprop="duration" content="<?php echo $timevideo; ?>"/> <link itemprop="url" href="<?php echo $videourl; ?>"/> <link itemprop="thumbnailUrl" href="https://img.youtube.com/vi/<?php echo $IDvideo; ?>/maxresdefault.jpg"/> <meta itemprop="name" content="<?php the_title(); ?>"/> <meta itemprop="uploadDate" content="<?php echo $datev; ?>"/> <meta itemprop="isFamilyFriendly" content="true"/> <span itemprop="thumbnail" itemscope itemtype="http://schema.org/ImageObject" > <img itemprop="contentUrl" src="https://img.youtube.com/vi/<?php echo $IDvideo; ?>/maxresdefault.jpg" /> <meta itemprop="width" content="<?php echo $imgWidth; ?>"/> <meta itemprop="height" content="<?php echo $imgHeight; ?>"/> </span> </div> <iframe id="videoevent" width="auto" height="auto" src="https://www.youtube.com/embed/<?php echo $IDvideo; ?>" frameborder="0" allowfullscreen></iframe><div class="clear"></div> </div> <?php } // end videourl ?>Для начала нам нужно добавить новое произвольное поле для записей, в которое будут вводить url видоса из ютуба. Из этой строки скрипт вытащит id. После этого идём сюда и получаем ключ YouTube Data API. Вставляем его в местах, где написано “ВАШ_КЛЮЧ_API”. Всё. Впендюриваем в вёрстку шаблона код выше и радуемся вот такой вот микроразметочке: Можно вставить больше полей, но мне было лень. Кому надо, допилят код под свои нужды.