よくあるWordPress / 更新情報のヘッドライン表示


WordPressでトップページにお知らせなどヘッドライン表示したい場合のやりくり。

1. まずは自分自身の更新情報取ってくるとき

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$feed = new WP_Query(array(
    'cat' => 1,
    'posts_per_page' => 5
));
?>
<div class="feed">
<?php if ($feed->have_posts()): // データあったら表示 ?>
    <ul>
    <?php while($feed->have_posts()): ?>
        <?php $feed->the_post(); ?>
        <li>
            <a href="<?php the_permalink() ?>">
                <span class="date"><?php the_time('Y.m.d'); ?></span>
                <span class="title"><?php echo mb_strimwidth(the_title('', '', false), 0, 60, '…'); ?></span>
            </a>
        </li>
    <?php endwhile; ?>
    </ul>
<?php else: ?>
    <!-- データないよ -->
<?php endif; ?>
</div>

WP_Queryで特定のカテゴリ(‘cat’ => 1)から5件だけ(‘posts_per_page’ => 5)取ってくる場合。
他にもイロイロ指定できます。
テンプレートタグ/query posts – WordPress Codex 日本語版

タイトルのとこは長いのを省略してるけど、そんなの気にしない場合は下記でも。

1
<?php the_title('<span class="title">', '</span>'); ?>

あとは the_time() のトコは the_date() 使うと、同じ日付が続いたときに省略されてあわてがちなので注意。

2. Feedから更新情報とってくるとき
どこぞのRSSやら取ってきて表示したいときもあるよね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
include_once ABSPATH . WPINC . '/feed.php';
// Feed取得
$feed = fetch_feed('http://example.com/feed/atom/');
if (is_wp_error($feed)) {
    $maxitems = 0;
} else {
    $maxitems = $feed->get_item_quantity(5);
    $items = $feed->get_items(0, $maxitems);
}
?>
<div class="feed">
<? if ($maxitems): // データあったら表示 ?>
    <ul>
    <? foreach ($items as $item): ?>
        <li>
            <a href="<?php echo $item->get_permalink(); ?>">
                <span class="date"><?php echo $item->get_date('Y.m.d'); ?></span>
                <span class="title"><?php echo mb_strimwidth($item->get_title(), 0, 60, '…'); ?></span>
            </a>
        </li>
    <? endforeach: ?>
    </ul>
<? else: ?>
    <!-- データないよ -->
<? endif; ?>
</div>

最初に表示する件数のやりくりあるけど、だいたい流れはおなじ。
あとは feed.php のインクルード忘れないように。fetch_rss は非推奨っぽいので、fetch_feed 使いました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です