WordPressで本文からdescriptionを取得する方法

WordPressでウェブサイトを作成しているときに公開前に私がいつも行うのがページごとに「description」を手動で入れる、です。
SEO(?)的にも固定ページとして吐き出すページはやはり手動できちんとした文言をいれたほうが良いと思います。

基本的は私はWPのSEO Packというプラグインを使用しているので、トップページおよび固定ページに関してはそのプラグインを使用して
お客様と相談しながらだったり、ひとまず私のほうでいれておいて…という感じでウェブサイトの最後の仕上げをしていきます。

ただあるときお知らせやらのsingle.phpのディスクリプションってどうすんの?っていうのが頭によぎりました。
今までスルーしていた部分です!
ということで今回は表題の通り、アーカイブやシングルなどのページでWordPressで本文からdescriptionを取得する方法をご紹介します。

WordPressで本文からdescriptionを取得する方法

<?php $description = $post->post_content; ?>
<meta name="description" content="<?php echo $description; ?>">

基本的には上記のソースで記事からdescriptionを取得してくれます。
ただ、上記のままだと改行がすべて入力した通りに反映されます。
それを改善するためのソースが以下になります。

<?php $description = $post->post_content;
$description = str_replace(array("\r\n","\r","\n","&nbsp;"),'',$description); ?>
<meta name="description" content="<?php echo $description; ?>">

これで改行されず1行でディスクリプションが反映されます!
よし!これでOK♪と思いきや…

実は上記のソース、途中で画像などが入っていると<img>タグがそのまま表示されてしまうのです…(´;ω;`)
そこらへんもつぶしつぶしで対応したのが以下の方法となります。

<?php $description = $post->post_content;
$description = str_replace(array("\r\n","\r","\n","&nbsp;"),'',$description); ?>
<meta name="description" content="<?php echo $description; ?>">

はい、これでもう大丈夫です!みなさんもsingleなどにはこのソースが出るようにしておけばディスクリプションを入れる手間を少し省くことができますよ~!
お試しあれ!

ちなみに文字数を制限したいときは以下のやり方です!おまけで紹介しておきますね~♪

<?php $description = $post->post_content;
$description = str_replace(array("\r\n","\r","\n","&nbsp;"),'',$description);
$description = wp_strip_all_tags($description);
$description = preg_replace('/\[.*\]/','',$description);
$description = mb_strimwidth($description,0,220,"..."); ?>
<meta name="description" content="<?php echo $description; ?>">