きっと、もっと良い方法があるとは思いますが
とりあえずなんとかしたい!という方のために書いておきます。
お客様のご依頼で、フロントエンドから通常のポスト内容+カスタムフィールドで入力
(その方法は、時間があったらおいおい書くかもしれません。)
さらに、その内容をCSVに書き出すというご依頼を頂きました。
カスタムフィールドはCSVに入ったものの、通常のポストコンテンツを
CSVに書き出そうとすると、タグが入るわ、画像は入るわで大変です。
探してみると日本語でも、英語でも情報は少なく
PHPの関数などを見ても、なんかぴんと来るのがなく困っていた所
やっとたどり着いたのが、下記のページ
【How to retrieve text only from wp_content() not from wp_excerpt()?】
(てけとーな意訳:抜粋じゃなくてwp_contentの中身を取り出すのはどうやってやるの?)
http://wordpress.stackexchange.com/questions/87909/how-to-retrieve-text-only-from-wp-content-not-from-wp-excerpt
ここで紹介されているコード
$content = get_the_content(); $content = preg_replace(‘/(<)([img])(\w+)([^>]*>)/’, ”, $content); $content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content); echo $content;
では、今一うまくいかなかったので(質問主さんもそんな感じのようですが…)
$content = strip_tags($value->post_content); $content = str_replace(' ', " ", $content); $content = str_replace(array("\r\n","\r","\n"), '', $content);
とすることで、うまくいきました。
strip_tagsはPHPの関数で
“この関数は、指定した文字列 (str
) から全ての NUL バイトと HTML および PHP タグを取り除きます。 この関数は、fgetss() 関数と同じタグ除去アルゴリズムを使用します。” (引用元:http://www.php.net/manual/ja/function.strip-tags.php)
というものです。
ただ、これだけだと無駄な改行や、 が入っていたので
str_replaceでそれらを取り除くまたは空白に置き換えて書き出したら上手く行きました。
WordPressの関数では見当たらなかったので、同じように困っている人は試してみてください。