「single.php」「page.php」などで投稿内容を表示する際に、カテゴリなどによって表示のさせ方を変えたい場合があります。
ただし、これらのファイルでデフォルトで記事内容を出力している関数「the_content()」は’echo’にて内容を出力しているため、問答無用で画面に出力してしまいます。
てなわけでこの関数をゴソッとコピーし、echoで出力しているところを戻り値(return)とする関数を作ってしまえばいいのでは、と。
修正ファイルは以下のファイル。
\wp-includes\post-template.php
・元関数の内容
210行近辺にいるはずです。
function the_content( $more_link_text = null, $strip_teaser = false) { $content = get_the_content( $more_link_text, $strip_teaser ); /** * Filter the post content. * * @since 0.71 * * @param string $content Content of the current post. */ $content = apply_filters( 'the_content', $content ); $content = str_replace( ']]>', ']]>', $content ); //echo $content; /* ここが「echo」なので、問答無用で画面に出力される */ echo $content; }
・コピーした新関数「the_content2」
関数名は何でもいいです…
そしたら「echo」だったところを、「return」にするだけです。
function the_content2( $more_link_text = null, $strip_teaser = false) { $content = get_the_content( $more_link_text, $strip_teaser ); /** * Filter the post content. * * @since 0.71 * * @param string $content Content of the current post. */ $content = apply_filters( 'the_content', $content ); $content = str_replace( ']]>', ']]>', $content ); /* さっき「echo」だったところを、「return」にするだけ */ return $content; }
ちなみに…ふつうは「the_content」の出力のところで引数を使って、分岐しますけどね…苦笑
まぁ、手を入れる箇所が少ないということでこういう資源に優しくない方法を取ってます。
・そうすると何が出来るか
投稿を出力する「single.php」などで「the_content」を使って、そのまま記事を出力していたところを「the_content2()」を用いることで、記事内容をphpで編集してから出力することが可能になります。
※「single.php」で「the_content()」で記事内容を出力しているところ。
' , $mtime; ?>
これに対し、制作した「 the_content2(); 」を用いての、記事出力の例を紹介します
・そのまま出力(the_content()と同じこと)
・「str_replace」関数を用いて本文中の「バカ」を「天才」に置き換えて出力
・「strip_tags」関数を用いてHTMLタグを削除し、テキストのみを出力
・ちなみに「strip_tags」関数は、引数でタグを指定するとそのタグは許可されます。これチョー便利です
とタグのみが効いた状態で表示 */ echo $honbun; ?>
決してスマートなやり方ではないかもですが、“お手軽に”という意味では手を入れる箇所が少ないので良いかと思います。
[adsense4]
コメント