Как обрезать пост в RSS в заданном месте

Прошлый мой пост оказался очень длинным. Из-за того, что я решил выдавать в RSS не анонсы, а целые записи случились проблемы. В агрегаторах FeedSpot и Netvibes пост показывался все равно не полностью — критический размер составлял порядка 13 тыс. символов, а Google Reader и Feedly вообще не отображали в своей ленте эту запись. Было принято решение найти способ вручную обрезать RSS любого поста: причем, использовать для этого свою уникальную метку, чисто для RSS, никак не связанную с тэгом more.

Я использую плагин Ozh’ Better Feed, который предоставляет выбор: обрезать RSS в том же месте, где поставлен тэг more (читать дальше), либо же выдавать пост целиком. В принципе, для моей задачи подошел бы плагин RSS No More, который может обрезать RSS в заданном месте записи, в том месте, где вставлен тэг [rss-cut]. Однако, не хотелось из-за редко используемой фичи ставить отдельный плагин, который к тому же давно не обновлялся. Было решено просто подправить Ozh’ Better Feed.

Итак, в папке плагина ozh-better-feed находится папка inc, в которой имеется файл feed.php — его и нужно изменить. Я это сделал следующим образом. В функции function wp_ozh_betterfeed_dofeed($content) после строк

$separator = "<span id="more-$id"></span>";
if ($wp_ozh_betterfeed[‘split’] and (strpos($content,$separator) != FALSE)) {
$content = preg_split("#$separator#",$content);
$content = $content[0] . $wp_ozh_betterfeed[‘readmore’];
//close <p> tags that might have been lost in the splitting
if (!preg_match("#</p>$#", $content)) {
$content .= "</p>n";
}
$wp_ozh_betterfeed[‘splitted’] = 1;
}

добавляю практически тоже самое:

// — custom rss (not post!) cut ——
$separator = "<span id="cutrss"></span>";
if (strpos($content,$separator) != FALSE) {
$content = preg_split("#$separator#",$content);
$content = $content[0] . $wp_ozh_betterfeed[‘readmore’];
//close <p> tags that might have been lost in the splitting
if (!preg_match("#</p>$#", $content)) {
$content .= "</p>n";
}
$wp_ozh_betterfeed[‘splitted’] = 1;
}
// ————————————

 

После этих манипуляций появляется следующая возможность. При написании поста, в том месте где необходимо обрезать RSS вставляется следующее:

<span id="cutrss"></span>

(без лишних пробелов и прочих изменений символов!)

Вот собственно и все.

Ах да, и в качестве лытдыбра: я таки вынес сегодня елку.

Если вам понравился материал, пожалуйста, поделитесь им с друзьями: