WordPressのタイトルと本文の文字数制限、邪魔なHTMLコードを消す

トップページやその他の下層ページで新着記事やカスタム投稿を読み込む時にブログの記事一覧ページなどで本文を表示させる時に文字数を制限しておかないとエライ事になる。
the_excerpt()を使う手を10年前に使っていたかとは思いますが、色々と自動でタグが入ってしまったり、結局文字数生業のためにfunctions.phpに書く必要があったりととりあえずメンドクサかった思い出が…
the_title()とthe_contnet()の文字数制限と邪魔なHTMLタグの排除について。
タイトルの文字数制限を『the_title()』でやっちゃう
15文字で制限、その後をぶっ飛ばす
/* 15文字で制限する場合 */
<?php echo mb_substr($post->post_title, 0, 15); ?>
15文字で制限、その後に『…』なんかを入れてみる
/* 15文字で制限する場合 */
<?php if(mb_strlen($post->post_title, 'UTF-8')>20){ $title= mb_substr($post->post_title, 0, 20, 'UTF-8'); echo $title.'……'; }else{ echo $post->post_title; } ?>
本文の文字数制限をやってみる
タイトルと同じ処理をで200文字で制限する
/* 200文字で制限する場合 */
<?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; } ?>
ところがどっこい先頭200文字以内にhtmlタグがあればレイアウトが崩れたり閉じタグがない状態になったり何かと不便。
HTMLタグを外して文字数制限
/* 改行コードが残らないように削除 */
<?php if(mb_strlen($post->post_content,'UTF-8')>200){ $content= str_replace('\n', '', mb_substr(strip_tags($post-> post_content), 0, 200,'UTF-8')); echo $content.'……'; }else{ echo str_replace('\n', '', strip_tags($post->post_content)); } ?>
これで思うようになると思われまっす。
function.phpをいじらないで、文章を抜粋させることができるようになります。管理しやすいように自分の好みの方法でカスタマイズすることでレイアウトの自由があがりますね。