web-dev-qa-db-ja.com

fetch_feed:時系列順ではなく、出現順にエントリを取得する

フィードを取得してそのアイテムを表示するためにWP関数fetch_feedを使用しています。

    <?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>

問題の フィード(Firefoxなど) にアクセスすると、XMLのエントリが順番に表示されます。 fetch_feedは代わりに最新のものを取得します(それらの "published"タグに従って)。 XMLフィードでの順序に従ってアイテムを確実に取得するにはどうすればよいですか(年代順ではありません)。たぶん this で順序を設定することは可能ですか?

編集:$ feed-> enable_order_by_date(false)を追加してみました。しかし、それは機能を壊すようです..

2

わかりました。私はこれに何時間も費やしましたが、どうにか解決策を見つけることができました。探していたコマンドは$ rss-> enable_order_by_date(false)です。

だからあなたは(コミュニティの利益のために)設定する必要があります:

    <?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>

お役に立てれば! :)

6