Отримати всі повідомлення в RSS


10

Мені цікаво, як / якщо я можу отримати доступ до більш ніж останніх публікацій X, визначених у налаштуваннях wordpress. Я бачив плагіни, які переміщують весь вміст блогу через RSS, не роздиралися, щоб побачити їх методи.

В основному я керую декількома сотнями блогів WordPress, і будую генератор розсилок для своїх клієнтів. Вони хочуть мати можливість вибрати декілька публікацій, а уривки з’являться в тілі розсилки. Сайти розповсюджуються на декілька серверів, а генератор інформаційних бюлетенів будується поверх нашого CRM, тому прямі запити до бази даних будуть важкими. RSS був би найчистішим, але я не можу зрозуміти, як отримати доступ до більш ніж 10 за раз (коли в адміністраторі встановлено 10).

Будь-які ідеї?


що ви маєте на увазі під "10 встановлено в адміністраторі"?
gcb

Відповіді:


5

Кодекс має фрагмент прикладу про те, як використовувати post_limitsфільтр, щоб змінити кількість, встановлену в адміністраторі для каналу.

if (isset ($query->query_vars['feed']) and ($query->query_vars['feed'] == 'ics')) 
    add_filter('post_limits','__return_empty_string'); 

http://codex.wordpress.org/Function_Reference/query_posts#Usage_Tips


1
Це може бути варіантом, але я сподівався уникнути необхідності змінювати код теми на 700+ сайтах.
bhamrick

1
Так це я і закінчила. Мої сайти поширюються на декілька встановлень WordPress-Mu, тому це не буквально сотні різних примірників WordPress на сотнях серверів. Проблема полягала в тому, що мені потрібна була ця функціональність лише для деяких сайтів у межах кожної установки. Тому я написав плагін, який це робить, написав сценарій, який оновив базу даних, щоб активувати цей плагін на потрібних мені сайтах. Зроблено. Дякую за допомогу.
bhamrick

21

Спосіб отримання ваших публікацій - зателефонувати на різні сторінки RSS-каналу у вашому генераторі розсилок. Це безпечний підхід, який не потребує оновлення різних установок Wordpress:

yourwebsite.com/feed -> отримати останні 10 публікацій

yourwebsite.com/feed/ ? paged = 2 -> отримати наступні 10 публікацій

І так далі.


4

На жаль, те, що ви намагаєтеся зробити, як правило, нападає у більшості громад. Я чую, як ви просите, це:

  • Спосіб віддаленого отримання більшої кількості за замовчуванням (останні повідомлення)
  • Можливо, отримати всі опубліковані публікації на сайті
  • Не маючи прямої взаємодії з самим сайтом (використовуючи RSS)

Ця практика зазвичай використовується для вискоблювання вмісту з блогів та їх повторної публікації без дозволу оригінального автора. Тому я кажу, що це взагалі нахмурилося. Більшість авторів блогів вкладають багато часу та енергії на розробку чудового контенту, тому полегшення третьої сторони використовувати свої наполегливі зусилля, щоб додати SEO-кредит на свій власний сайт - це ... ну ... сонний.

Однак, на даний момент я припускаю, що у вас є законні причини для того, щоб сканувати вміст з понад 700 сайтів. У такому випадку я рекомендував би окремий, програмний метод - не RSS. Якщо у вас є законна інформація про вхід для всіх цих сайтів (тобто це ваші сайти, а не чужі), ви можете використовувати вбудовані функції WordPress XML-RPC для отримання вмісту.

Використовуйте вбудовану бібліотеку XML-RPC, щоб надіслати запит із metaWeblog.getRecentPostsзазначенням ідентифікатора блогу (як правило, 0 для окремих сайтів, але він може бути різним на багатьох веб-сайтах), вашого WordPress імені користувача, вашого WordPress пароля та кількості публікацій отримати (встановіть це на -1, щоб отримати їх усіх).

Інший сайт відповість (досить великим) XML-файлом, що містить вміст, який ви можете робити з тим, що хочете. Це все може відбуватися за кадром, і metaWeblog.getRecentPostsзапит дасть вам набагато більше інформації, ніж RSS-канал (включаючи спеціальні поля, які можуть бути важливими для вас).


2

Якщо пам'ять слугує, проходження -1 як кількість повідомлень має однаковий ефект. Не зовсім впевнений, як він потрапляє в URL-адресу.

Убік, якщо ви справді маєте 700+ сайтів, розгляньте наявність хрону, який svn оновлює або git витягує зі стабільної гілки, із приватного сховища щодня ... У поєднанні з щоденним http-дзвінком до wp- admin / upgrade.php. Це дозволить заощадити багато клопотів під час оновлення або налаштування веб-сайтів - завдяки чому це буде зроблено автоматично.



0

Якщо ви перейдете до "Налаштування"> "Читання" і змініть значення "Показ каналів синдикації показує найсвіжіше" на число, яке вам підходить, воно відобразиться до кількості введених вами каналів.


0

Хоча це не "всі повідомлення", я стверджую, що limitпарам є набагато кориснішим.

Я рекомендую безпосередньо фільтрувати параметр "posts_per_rss" як такий:

add_filter( 'option_posts_per_rss', 'my_posts_per_rss' );
function my_posts_per_rss( $option ) {
    if( isset( $_GET['limit'] ) ) {
        return (int) $_GET['limit'] ?: $option;
    }
    return $option;
}

Потім доступ до каналу можна отримати так: http://example.org/category/acme/feed/?limit=999

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.