Занявшись, наконец, рассылками для ClassicalMusicNews.Ru, мы решили сделать два варианта: один еженедельный, который будет собираться вручную. Другой — автоматический, который будет рассылаться ежедневно на основе RSS фида. Благо, MailChimp такую возможность предоставляет.
С ручным вариантом проблем не оказалось, было бы время, а вот с автоматическим возникли сложности. WordPress не вставляет в RSS фид картинки автоматически. А без картинок рассылка выглядит скучновато. Поэтому захотелось добавить в RSS фид картинки, причем так, чтобы по клику на них в новом окне открывался сайт со статьей.
На эту тему можно найти много плагинов, но плагин использовать не хотелось: на сайте их и так много, незачем ставить еще один для того, что можно сделать и руками.
В результате сделалось следующее:
В файл functions.php (если у нас Genesis, то не забываем, что это должен быть файл дочерней темы) добавляем вот такой код:
1 2 3 4 5 6 7 8 9 10 11 |
//* Добавляем картинки в RSS function post_thumbnail_rss($content) { global $post; $url = get_permalink( $post->ID ); if ( has_post_thumbnail( $post->ID ) ){ $content = '' . get_the_post_thumbnail( $post->ID, 'rss-image', array( 'style' => 'float:left; margin-right:10px; height: 150px; width: 300px; border: 2px solid #e5e5e5' ) ) . '' . $content; } return $content; } add_filter('the_content_feed', 'post_thumbnail_rss'); add_filter('the_excerpt_rss', 'post_thumbnail_rss'); |
Должно работать с любой темой, потому что ничего нестандартного тут не используется.
Можно дополнительно оформить наши картинки с помощью css, который видно в коде:
- float-left – выравнивание картинки. Мне нравится, чтобы она была слева, но можно поставить float-right или align-none;
- margin right – добавление воздуха между картинкой и текстом при выравнивании налево. Если выравниваем направо, ставим margin left;
- height – высота картинки в RSS;
- width – ширина картинки в RSS;
- border – граница вокруг картинки, в данном случае размер 2 px светло-серым цветом.
Внимание: оформлять картинки можно только css кодом в строке. Добавить css-класс к коду и задать стиль через style.css не получтится.
Ссылка с картинки в RSS на пост
Картинка — это прекрасно, но хочется, чтобы из рассылки можно было попасть на сайт, не только нажав «Читать далее», но и кликнув по картинке. Для этого вносим незначительные изменения в код:
1 2 3 4 5 6 7 8 9 10 11 |
//* Добавляем картинки в RSS function post_thumbnail_rss($content) { global $post; $url = get_permalink( $post->ID ); if ( has_post_thumbnail( $post->ID ) ){ $content = '.get_permalink( $post->ID).'">' . get_the_post_thumbnail( $post->ID, 'rss-image', array( 'style' => 'float:left; margin-right:10px; height: 150px; width: 300px; border: 2px solid #e5e5e5' ) ) . '' . $content; } return $content; } add_filter('the_content_feed', 'post_thumbnail_rss'); add_filter('the_excerpt_rss', 'post_thumbnail_rss'); |
Ловкость рук и никакого мошенничества — теперь картинки в RSS фиде, который отдает наш сайт, кликабельны.
Устанавливаем размер картинки в RSS
В приведенном выше коде размер картинки устанавливается дополнительно, этот код тоже нужно добавить в functions.php:
1 2 |
/** Add new image sizes */ add_image_size( 'rss-image', 300, 150, TRUE ); |
Другой вариант — это использовать стандартные размеры, например:
- Маленькие картинки предпросмотра – ‘thumbnail’
- Средний размер – ‘medium’
- Большой оригинальный размер – ‘large’
В целом задача выполнена. При желании можно навести еще больше красоты, например, сделав картинки «парящими» над экраном, с тенью. Может быть, попозже расскажу здесь, как это сделать.