WordPressのショートコード除去といえば、strip_shortcodes()が用意されています。
しかしstrip_shortcodes()は自分で作成したオリジナルのショートコードを除去してはくれません。デフォルトで登録されているショートコードしか削除してくれないんですね。
抜粋文を本文から作る際に、この点でハマったので解決策を以下に記しておきます。
オリジナルショートコードを削除する方法
//本文から抜粋を作る
function content_excerpt($content,$num){
$content = preg_replace('#\[[^\]]+\]#', '',$content);
$content = strip_tags($content);
$content = str_replace(array("\r\n","\n","\r"),"",$content);
$content = mb_strcut($content,0,$num,'UTF-8');
return $content;
}
↑これをfunctions.phpに貼り付け、
echo content_excerpt( $post->post_content , 300 );
使いたいところで↑を入れてください。
第二引数(300のところ)は、抜粋文にありがちな文字数指定です。取得したい文字数を入れてください。
関数の解説
やっていることとしては簡単で、まずは正規表現を使ってショートコードを囲む大括弧([]のこと)に囲われた範囲を除去します。
つぎにhtmlタグを除去し、改行コードを除去し、最後に指定した文字数を切り出しています。
改行コードを除去しているので、meta descriptionなどで使った場合にソースコードが改行されてしまうのを防げます。