it-swarm.xyz

Публиковать обновления RSS плагин уведомления

Всякий раз, когда я обновляю старый пост в блоге новой информацией, он виден всем читателям, которые посещают сам сайт. Читатели RSS-канала не получают обновления и пропускают новую информацию.

Я ищу способ возврата сообщения в RSS-ленту, как если бы это было новое сообщение (желательно с [Update] после заголовка сообщения). Однако это не должно быть новым сообщением RSS всякий раз, когда я только что сделал небольшое изменение (например, исправление орфографической ошибки). Было бы идеально, если бы меня спрашивали, было ли это незначительным изменением, когда я редактировал сообщение. Как мне этого добиться?

1
neo

Во-первых, это явно не ошибка. Каналы, сгенерированные WordPress, упорядочены по дате публикации, которая является и предполагаемой, и имеет смысл.

Вторые RSS-клиенты однозначно идентифицируют предметы. В конкретном случае WP фидов уникальным идентификатором является поле guid с не симпатичной (?p=xxx) постоянной ссылкой. Даже если сообщение изменено и возвращено в фид, его идентификатор остается прежним, и он рассматривается как прочитанный RSS-клиентом.

На практике некоторые клиенты обнаружат, что они изменились, а некоторые нет. В любом случае ситуация будет неоднозначной и ненадежной.

С точки зрения удобства использования ранее прочитанные элементы, вновь появляющиеся в ленте, могут быть раздражающими для читателей (лично для меня это раздражает как ад).

Подводить итог, что вы хотите, не невозможно, но (на мой взгляд) идет вразрез с механикой WordPress и RSS.

Учитывая ваши условия (и я предполагаю значительное количество таких правок), я бы предложил периодические дайджест посты со списками обновленных записей. Может быть создан вручную или с помощью кода.

2
Rarst

Как насчет создания настраиваемого флажка meta_field под названием update. Если флажок установлен, он может добавить фразу [обновлено] к заголовку.

Например:

<?php if ( get_post_meta( $post->ID, _updated_post, true ) ) {  echo '[Updated]'; the_title();  }else{ the_title(); } ?>

Это позаботится о посетителях сайта

Используйте the_title_rss для того же самого в своей ленте RSS

Возможно, вы захотите использовать wp_cron для автоматического сброса значения ofter x на количество времени, если вы не хотите вручную возвращаться назад и снимать флажок

1
Ashley G

Я думаю, что вы можете смотреть на это неправильно. Новая информация в вашем старом посте видна зрителям как сайта, так и RSS-канала. То есть любой, кто получает доступ к RSS-каналу после публикации, будет видеть последнюю версию.

Это правда, что любой, кто получил доступ к RSS-каналу до обновления сообщения, не будет знать, когда появится новая информация, но то же самое можно сказать и о посетителях вашего сайта. Единственный способ уведомить посетителей вашего веб-сайта и пользователей RSS о том, что старые сообщения были обновлены, - это создать новое сообщение, говорящее по сути: "Привет! Мой пост о том-то и том-то был обновлен! Пойдите, посмотрите".

1
Doug

По сути, вы пытаетесь обмануть читателя RSS, думая, что это другой пост, а не просто обновленная версия. В отличие от самого сайта WP, который вызывает самую последнюю версию контента из базы данных, когда кто-то просматривает его, RSS является более "статичной" версией, и всякий раз, когда различные устройства чтения каналов загружают информацию в приложение для чтения , он становится статическим независимо от того, сколько раз вы обновляете его снова. Также имейте в виду, что любые сторонние агрегаторы (такие как Feedburner) будут извлекать информацию и затем обслуживать ее из своего собственного кэша.

Итак, у вас есть несколько вариантов:

  1. Измените дату публикации и слегка измените слизь с постоянными ссылками при каждом редактировании, чтобы он выглядел как новый элемент
  2. не публиковать, пока он не готов

Хотя это не прямой ответ, я должен спросить, почему вы хотите сделать это для начала. Если вы постоянно обновляете одну и ту же публикацию/контент, то вы отказываетесь от использования того, почему люди подписываются на RSS для начала. Хотя я уверен, что для этого есть причины, я лично отменил бы подписку на сайт, на котором у моего читателя было много версий одного и того же контента.

0
Norcross

Канал RSS работает через FeedBurner или идет прямо из WP?

Я слышал, что FeedBurner может помешать даже вашим наилучшим планам сделать эту работу.

Почему бы просто не переслать (как в c-p) старый в новый и добавить тег [ОБНОВЛЕНО], если ваши подписчики действительно нуждаются в его просмотре?

0
mitchellhislop

Некоторые решения для вас, которые будут или могли бы работать

Измените дату публикации при обновлении сообщения - оно будет добавлено обратно в канал RSS. При необходимости вы можете сохранить дату первого поста в специальном поле.

Тем не менее, контент часто синдицируется - то, что действительно необходимо, это изображение, которое создается на основе даты последнего изменения, которая ссылается на постоянную ссылку. Если вы делаете это таким образом, и это не то, что я проверял, вы могли бы иметь канал на основе даты последнего изменения, а не даты публикации. Возможно, потребуется пинг. Google Blogsearch, безусловно, хранит копию всего содержимого канала, даже если им говорят не показывать его в индексе с помощью элементов управления feedburner. Существует вероятность того, что индекс основан на постоянных ссылках, а не на элементах фида Atom.

Хотите быть очень хитрым и получать больше обратных ссылок ... может быть оправданным добавить дату в конец постоянной ссылки, когда вы изменяете дату публикации с помощью параметра.

Другой альтернативой является сохранение последнего изменения, и всякий раз, когда публикация, если вы публикуете, вы также рекламируете недавно измененные записи внизу в RSS, а также размещаете что-то похожее на боковой панели. Мне действительно нравится этот вариант, потому что он добавляет больше ссылок.

0
AndyBeard

Я вижу следующее решение: список сообщений в каналах должен быть отсортирован по дате последнего обновления сообщения. Я не уверен, что это уже относится к каналам. Если нет, то плагин должен подключиться к лентам после запроса и изменить порядок сортировки.

WP Minor Edit (плагин Wordpress) предлагает часть функций, которые вы уже искали. Он также использует дату последнего обновления поста, не меняя ее.

Если теперь другой плагин подключается к каналу, делает вид канала, как я указал, а затем, в каждом заголовке канала, проверяет, являются ли данные сообщений другими, чем дата последнего обновления сообщения, он просто добавляет [ОБНОВЛЕНО] к названию.

Готово.

0
hakre