fetch_feed: recupera las entradas en el orden en que aparecen, no cronológicamente

2

Estoy usando la función WP fetch_feed para recuperar un feed y mostrar sus elementos.

    <?php
    /* include the required file */     include_once(ABSPATH . WPINC . '/feed.php');
    /* specify the source feed   */     $rss = fetch_feed('FEED_URL');
    /* checks obj. is created    */     if (!is_wp_error( $rss ) ) :
    /* specify number of items   */     $maxitems = $rss->get_item_quantity(4);
    /* create an array of items  */     $rss_items = $rss->get_items(0, $maxitems);
endif;
    ?>
    <ul>
        <?php if ($maxitems == 0) echo '<li>Content not available.</li>';
    else
        // Loop through each feed item and display each item as a hyperlink.
        foreach ( $rss_items as $item ) : ?>
            <li>
                <a href="<?php echo $item->get_permalink(); ?>" title="<?php echo esc_html( $item->get_title() ); ?>" rel="external"><?php echo esc_html( $item->get_title() ); ?></a>
            </li>
            <?php endforeach; ?>
    </ul>

Si visito feed en cuestión con (por ejemplo) Firefox, veo las entradas en el orden de aparición de XML. fetch_feed recupera el más reciente en su lugar (de acuerdo con su etiqueta "publicada"). ¿Cómo puedo asegurarme de que recupera los elementos según su orden en la fuente XML (no cronológicamente)? Tal vez sea posible establecer el orden con esto ..?

EDITAR: intenté agregar $ feed- > enable_order_by_date (false); pero parece romper la función ..

    
pregunta MultiformeIngegno 03.02.2013 - 15:57

1 respuesta

6

Ok, encontrado. Pasé horas en esto pero logré encontrar la solución. El comando que estaba buscando era $ rss- > enable_order_by_date (false) ;.

Por lo tanto, debe establecer (para beneficio de la comunidad):

    <?php
    /* include the required file */     include_once(ABSPATH . WPINC . '/feed.php');
    /* specify the source feed   */     $rss = fetch_feed('FEED_URL');
    /* disable order by date     */     $rss->enable_order_by_date(false);
    /* checks obj. is created    */     if (!is_wp_error( $rss ) ) :
    /* specify number of items   */     $maxitems = $rss->get_item_quantity(X);
    /* create an array of items  */     $rss_items = $rss->get_items(0, $maxitems);
endif;
    ?>
    <ul>
        <?php if ($maxitems == 0) echo '<li>Content not available.</li>';
    else
        // Loop through each feed item and display each item as a hyperlink.
        foreach ( $rss_items as $item ) : ?>
            <li>
                <a href="<?php echo $item->get_permalink(); ?>" title="<?php echo esc_html( $item->get_title() ); ?>" rel="external"><?php echo esc_html( $item->get_title() ); ?></a>
            </li>
            <?php endforeach; ?>
    </ul>

Espero que esto ayude! :)

    
respondido por el MultiformeIngegno 03.02.2013 - 20:11

Lea otras preguntas en las etiquetas