久しぶりにwordpressをいじったので忘れないうちに備忘録に残しておこうと思います。
新着一覧を実装したのですが、今回の仕様はこんな感じ。
- 最新記事の記事を降順で5件表示。
- 概要なのでテキストのみを表示させる。画像は表示させない。
- 100文字以上のときは末尾に"..."を付けてそれ以上表示させない。
上記の仕様を満たすには「strip_tags」と「mb_substr」関数を使えばよさそうです。
この関数は、指定した文字列 (str) から全ての NUL バイトと HTML および PHP タグを取り除きます。 この関数は、 fgetss() 関数と同じタグ除去アルゴリズムを使用します。
strip_tags - 文字列から HTML および PHP タグを取り除く
この関数は、指定した文字列 (str) から全ての NUL バイトと HTML および PHP タグを取り除きます。
mb_substr - 文字列の一部を得る
strip_tags関数を使用し、エントリー本文からHTMLタグを取り除いてテキストのみを抽出した後pタグで囲って表示しています。
で、こんな感じのコードを書くと...
<ul class="list">
<?php $posts = get_posts('numberposts=5&order=desc'); ?>
<?php foreach($posts as $post): ?>
<li>
<a href="<?php the_permalink(); ?>">
<article>
<h1><?php the_time('Y.n.j') ?> | <?php the_title(); ?></h1>
<?php
$text = strip_tags($post->post_content);
if(mb_strlen($text)>100) {
$content= mb_substr($text,0,100) ; echo '<p>' .$content. '...</p>' ;
} else {
echo '<p>' .$text. '</p>' ;
}
?>
</article>
</a>
</li>
<?php endforeach; ?>
<!-- /.list --></ul>
結果こんなコードが生成されるわけです。
<ul class="list">
<li>
<a href="エントリーURL">
<article>
<h1>2013.5.1(公開日) | エントリータイトル</h1>
<p>
エントリー概要(100文字)
</p>
</article>
</a>
</li>
・
・
・
<!-- /.list --></ul>
仕様は満たしているので、たぶんこんな感じでいいんじゃないかしら?