web関連

【wordpress】ループ外でプレーンな本文を取得する方法

【wordpress】ループ外でプレーンな本文を取得する方法

wordpressの投稿や固定ページ本文のテキストだけループ外で取得したいなぁと思ったときの備忘録

ループ外でプレーンな本文を取得するコード

<?php 
global $post;
$content = $post->post_content ;//本文取得
$content = strip_shortcodes( $content );//ショートコ―ド除去
$content = wp_strip_all_tags( $content,true );//htmlタグ周り除去
$content = mb_substr($content,0,150).'...';//抜粋
?>
<?php echo $content; ?>//出力
meta周りで使いたくて調べた

メモ

調べていた時に色々出てきたのでメモ

本文取得

global $post;
$post->post_content ;

でループ外で本文取得できるけどショートコ―ドなんかはテキストで

[contact-form-7 id="5" title="お問い合わせ"]

って吐き出されちゃうからショートコ―ドちゃんと出力したいときは

apply_filters( 'the_content', $post->post_content );

を使った方がいい

htmlタグとか除去

wp_strip_all_tags( $content );

でhtmlタグとかコメントアウトとか除去したプレーンなテキストを取得できるけど連続した空白文字を1つのスペースに変換する時とかは引数に「true」を指定するとテキスト同士の隙間が詰まったプレーンなテキストが取得できる

wp_strip_all_tags( $content , true );
「strip_tags()」はphpの関数
「wp_strip_all_tags()」はwordpressの関数

抜粋

過去に備忘録あげてたからリンク貼る

「global $post;」いらないかも
「var_dump($post);」で中身みたら普通に取得できてた…
functions.phpとかで使うときは必要なのかな?ちょっと勉強しないとわからない…