WordPressにイラッ!抜粋(the_excerpt())が未入力だと本文(the_content)から拾ってくる仕様に対抗する
抜粋を取得して、何か入ってたら出力、入ってなかったらラッパータグごと出力しない、ということがやりたかったのですが、
<?php $excerpt = get_the_excerpt(); ?> <?php if (!empty($excerpt) ) : ?> <div class="excerpt"><?php echo nl2br($excerpt); ?></div> <?php endif; ?>
こんなコードをかいたら、抜粋の内容が空でも何故かずらずらと出力されてる場面に遭遇…( ゚д゚)
まあ…仕様書読めよ自分という話です。
抜粋を入力していない場合は投稿内容の最初の 55個の単語までを表示します
テンプレートタグ/the excerpt - WordPress Codex 日本語版
抜粋を入力していない場合は投稿内容の最初の 55個の単語までを表示します
テンプレートタグ/the excerpt - WordPress Codex 日本語版
大事なので2回引用しました。そうです。WPの仕様として、抜粋が入力されていない場合は本文からとってくるという余計なお世話をしてくれるのです。
「抜粋」なのでその仕様が正しい。でも世の中正しいだけじゃ生きていけないのです。
ということで対抗したコードがこちら。
<?php if ( has_excerpt() ) : $excerpt = get_the_excerpt(); ?> <div class="excerpt"><?php echo nl2br($excerpt); ?></div> <?php endif; ?>
has_excerpt()なんて便利な関数が用意されているじゃありませんか…。ごめんなさいWP、私が悪かったよ…。
[参考] Wordpressでthe_excerpt()(抜粋)の有無を確認できるhas_excerpt() | ちいさな創々