Как получить RSS-канал мудрый месяц с другого сайта - PullRequest
2 голосов
/ 28 сентября 2011

У меня есть вопрос относительно RSS-каналов. Я использую WordPress версии 3.2.1 и другие RSS-каналы на моем сайте. Мое требование состоит в том, чтобы ежемесячно получать каналы и показывать их на боковой панели моего сайта.

В настоящее время я использую виджет rss и показываю каналы на боковой панели, но они отображаются в следующем формате:

  1. Четверг 9-29 16:30 Элементарный квест - Ночь для родителей
  2. Чт 10-6 - Весь день - Полдня: Элементарные конференции

Я буду очень благодарен за вашу помощь. Заранее спасибо.

Обновление: 13 марта 2012

Этот код присутствует в index.php

<h2><?php _e('Recent news from Some-Other Blog:'); ?></h2>
<?php // Get RSS Feed(s)
include_once(ABSPATH . WPINC . '/feed.php');

// Get a SimplePie feed object from the specified feed source.
//$rss = fetch_feed('http://example.com/rss/feed/goes/here');

$rss = fetch_feed('http://lakewashington.intand.com/index.php?type=export&action=rss&schools=48&groups=884,876,874,996');

print_r($rss);

if (!is_wp_error( $rss ) ) : // Checks that the object is created correctly 
    // Figure out how many total items there are, but limit it to 5. 
    $maxitems = $rss->get_item_quantity(5); 

    // Build an array of all the items, starting with element 0 (first element).
    $rss_items = $rss->get_items(0, $maxitems); 
endif;
?>

<ul>
    <?php if ($maxitems == 0) echo '<li>No items.</li>';
    else
    // Loop through each feed item and display each item as a hyperlink.
    foreach ( $rss_items as $item ) : ?>
    <li>
        <a href='<?php echo esc_url( $item->get_permalink() ); ?>'
        title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'>
        <?php echo esc_html( $item->get_title() ); ?></a>
    </li>
    <?php endforeach; ?>
</ul>

1 Ответ

1 голос
/ 09 марта 2012

Вы можете сделать это вручную.Просто используйте встроенную функцию wordpress fetch_feed .

У вас даже есть пример:

<h2><?php _e('Recent news from Some-Other Blog:'); ?></h2>
<?php // Get RSS Feed(s)
include_once(ABSPATH . WPINC . '/feed.php');

// Get a SimplePie feed object from the specified feed source.
$rss = fetch_feed('http://example.com/rss/feed/goes/here');
if (!is_wp_error( $rss ) ) : // Checks that the object is created correctly 
    // Figure out how many total items there are, but limit it to 5. 
    $maxitems = $rss->get_item_quantity(5); 

    // Build an array of all the items, starting with element 0 (first element).
    $rss_items = $rss->get_items(0, $maxitems); 
endif;
?>

<ul>
    <?php if ($maxitems == 0) echo '<li>No items.</li>';
    else
    // Loop through each feed item and display each item as a hyperlink.
    foreach ( $rss_items as $item ) : ?>
    <li>
        <a href='<?php echo esc_url( $item->get_permalink() ); ?>'
        title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'>
        <?php echo esc_html( $item->get_title() ); ?></a>
    </li>
    <?php endforeach; ?>
</ul>

Вам просто нужно поместить это в свой sidebar.php, где бы вы ни находилисьнеобходимо показать канал.

Отредактируйте строку:

$rss = fetch_feed('http://example.com/rss/feed/goes/here');

... и укажите URL для правильного канала.И:

$maxitems = $rss->get_item_quantity(5); 

... для указания количества отображаемых элементов (пять в примере)

Затем проверьте foreach внутри UL, там вы можетестиль отображения канала.

По умолчанию функция fetch_feed будет кэшировать каналы в течение 12 часов.Если вам нужно делать это каждые 30 дней, вы можете использовать WordPress Transients API , чтобы сделать это без хлопот.

...