Тема: Как вставить картинку поста и ссылку "Читать дальше" в Rss блога
Как вставить картинку поста и ссылку "Читать дальше" в Rss WordPress блога
Сегодня я расскажу, как добавить в свою RSS ленту картинки к постам и ссылку "Читать дальше" после каждого из них.
Вот, как должно получиться: http://traveliving.org/feed/.
Внимание! Статья устарела, так как нижеизложный код был оформлен в плагин RSS Manager, который можно скачать отсюда http://wordpress.org/extend/plugins/rss-manager/ или из админки вашего WordPress.
Этот метод подходит только тем, кто прописывает адрес миниатюры поста в произвольных полях. Есди вы присваиваете миниатюры каким-то иным способом, напишите здесь, я скажу какие внести правки в код.
Если вы вообще не используете миниатюры в вашем блоге - самое время начать, это не так уж и сложно: под редактором любого поста найдите блок "Произвольные поля" и создайте новое с именем "thumbnail", а в значении пропишите ссылку на изображение.
Теперь это изображение можно использовать не только в RSS, но и в любом другом месте в блоге.
Сразу скажу, что такой метод лучше всего подходит тем, кто отправляет в RSS только анонсы постов (цитаты), а не посты целиком.
Вы можете зайти в админку вашего сайта, "Параметры->Чтение" (Options->Reading) и там выбрать "Для каждой статьи в ленте отображать" -> "Анонс". Тогда ваш блог будет показывать текст из поля "Цитата", которое можно найти под редактором каждого поста. Если это поле пустое, то пост будет обрезан автоматически и будет показано только его начало.
Теперь скопируйте следующую функцию и вставите ее в файл functions.php из папки вашей темы (шаблона) в рамках тегов <?php и ?>.
function my_rss($content) { // Функция перехватывает содержимое поста и запоминает его в переменную $content
$thumbnail_custom_field_name = 'thumbnail'; //Введите сюда название произвольного поля ваших картинок для постов
$readmore_text = "Читать дальше..."; //вписываем сюда текст ссылки, которая появится после содержимого
global $wp_query; //В этой переменной хранятся все данные обрабатываемого поста
$post_id = $wp_query->post->ID; //Находим ID поста
$post_title = get_the_title($post_id); //Название поста
$post_url = get_permalink($post_id); //Ссылку на пост
$post_thumbnail = get_post_meta($post_id, $thumbnail_custom_field_name, true); //Берем ссылку на картинку из произвольного поля с названием thumbnail
if(is_feed()) { //Если выводится RSS
if($post_thumbnail !== '') { //Если адрес картинки найден
$updated_content .= "<a href='$post_url' title='$post_title'><img src='$post_thumbnail' border='0' /></a>"; //Добавляем картинку со сылкой
$updated_content .= "<br /><br />"; //Добавляем отступ после картинки
} //Если адрес картинки не найден, то сразу переходим сюда:
$updated_content .= $content ; //Добавляем содержимое поста
$updated_content .= "<br /><br />"; //Добавляем отступ после текста
$updated_content .= "<b>(<a href='$post_url' title='$post_title'>$readmore_text</a>)</b>"; // Добавляем ссылку "Читать дальше" после содержимого.
}
else { //Если это вообще не RSS:
$updated_content = $content; //Просто копируем содержимое
}
return $updated_content; //Возвращаем обработанное содержимое
}
add_filter('the_excerpt_rss', 'my_rss'); //Добавляем функцию к выводу сокращенного RSS (анонсов)
add_filter('the_content', 'my_rss'); //Добавляем функцию к выводу полного RSS
Обратите внимание на самое начало кода, если вы хотите, чтобы он заработал у вас, то в строчке $thumbnail_custom_field_name = 'thumbnail'; нужно указать название произвольного поля для ваших картинок (вместо красного).
После сохранения файла, изменения появятся не сразу, особенно, если вы используете feedburner. Если ничего не изменилось - подождите полчасика перед тем, как паниковать
P.S. Есть, конечно, метод проще - ручная правка файлов feed-rss.php и feed-rss2.php, но тогда вам придется править эти файлы после каждого обновления WordPress.