query_postsで取得した本文の文字数を制限して表示したくて色々調べていた時にぶつかった問題です。
もう悩まない! WordPressのタイトルと本文の文字数制限を使いこなす
こちらのサイトを参考に、実装してみようと思ったのですが以下のPHPは動作しませんでした。
if(mb_strlen($post->post_content, 'UTF-8')>200){
$content= mb_substr($post->post_content, 0, 200, 'UTF-8');
echo $content.'……';
}else{
echo $post->post_content;
}
原因は$post->post_contentはquery_postsでは無くget_postsで動くものだったみたいです。
query_postsとget_postsの違いはquery_postsとget_postsの違いを御覧ください。
query_postsで動く物を見つけましたのでここに記します。
こう書くだけだった
echo wp_trim_words( get_the_content(), 55, '...' );
WordPressにwp_trim_wordsという関数が用意されているんですね。知らなかったです。
まぁquery_postsって非推奨になっているのでget_postsに切り替えた方が良いかと思います。
もしget_postsに切り替えるのが大変なサイトの場合は上記の方法で文字数制限を実装してみてはいかがでしょうか?
コメント