В WordPress давно уже и с успехом используется система форматов постов, призванная упростить оформление записей с разным медийным содержимым. Однако если подписаться на RSS блога, то обнаружится, что все посты идут с одинаковым оформлением, и не понятно, какой у них формат. Более того, передача контента в RSS оставляет желать лучшего, так как в WordPress до сих пор нет нормального функционала, способного корректно передавать видео, галереи изображений, вставленные в посты аудио файлы, и все это оформлять подобающим образом.
Универсальным методом формирования содержимого RSS сейчас является отправка цитаты поста или контента до тега more, ограниченного рамками упрощенной HTML-разметки, которая не всегда отвечает требованиям для передами мультимедийного контента. Поэтому посты формата видео трудно отличить от постов стандартного формата, а если в них только видео и ничего больше, то подписчик и вовсе может ничего не увидеть, получив в ленте RSS пустое сообщение. Чтобы исправить эту ситуацию, можно добавить к содержимому RSS информацию, поясняющую, запись какого формата получил подписчик, и что нужно сделать, чтобы увидеть мультимедийное содержимое записи.
Давайте создадим функцию, добавляющую в запись RSS миниатюру поста, а в добавок к ней так же добавляющую информацию о том, содержит ли этот пост аудио или видео, со ссылкой на пост, кликнув на которую, можно перейти на сайт и посмотреть мультимедийный контент. Для этого добавим в файл functions.php следующий код:
function featured_image_in_feed( $content ) { global $post; if( is_feed() ) { if( has_post_thumbnail( $post->ID ) ){ $output = get_the_post_thumbnail( $post->ID, 'large', array( 'style' => 'margin: 0 0 20px 0;' ) ); $content = $output . $content; } if( has_post_format( 'gallery' ) ) { $output = '<p>Этот пост содержит галерею изображений. <a>ID ) . '">Посмотреть галерею</a> на сайте.</p>'; $content = $output . $content; } if( has_post_format( 'video' ) ) { $output = '<p>Этот пост содержит видео. <a>ID ) . '">Посмотреть видео</a> на сайте.</p>'; $content = $output . $content; } if( has_post_format( 'audio' ) ) { $output = '<p>Этот пост содержит аудио. <a>ID ) . '">Послушать аудио</a> на сайте.</p>'; $content = $output . $content; } } return $content; } add_filter( 'the_content', 'featured_image_in_feed' );
Теперь если формат поста видео, аудио или галерея, то под содержимым записи в RSS будет появляться соответствующая подпись со ссылкой на пост, приглашающей к просмотру или прослушиванию. Это более информативнее, нежели чем получение пустой записи.