web関連
wordpressのエディタ内の本文をループ外で取得して文字数を制限してdescriptionに挿入する方法
the_content()やget_the_content()と同じような機能でループ外でエディター内のテキストを出力する時に使った時のメモ
とりあえずループ外で出力する方法
なにも考えずとりあえずループ外で使いたいときは以下のコード
//整形後の本文を取得
<?php echo mb_substr(strip_tags(apply_filters('the_content', $post->post_content)), 0, 300); ?>
//整形前の本文を取得
<?php echo mb_substr($post->post_content, 0, 300); ?>
整形後はhtmlタグを除いた奴で、整形前はhtmlタグが混ざったやつです。
整形前のコードは使わない方がいいみたいです。
参考
▼$post->post_content;は整形前の生のデータを抜き出してしまう
https://hacknote.jp/archives/4148/ふぃ
補足
- mb_substr()
- 文字列から文字数指定して取得できる
- strip_tags()
- 文字列から HTML および PHP タグを取り除く
- apply_filters()
- htmlなどテキストを修正して返すフックでテーマのカスタマイズに必要らしい
参考
▼Welcart のカスタマイズとフック(フックについて書いてある)
https://www.welcart.com/archives/techinfo/techinfo-20180105
▼apply_filters と add_filter の使用方法。
http://blog1.dd-company.com/using-apply-filters-and-add-filter/
手間はかかるがfunction.phpに追加して使いまわしやすくする方法
前述したやり方でも出力できるけどコードが汚くなるのでfunction.phpにオリジナル関数を追加して出力する方法
function twotone_get_content($num = 100) {
global $post;
$return_str = trim(strip_tags($post->post_content));
$return_str = str_replace(array("r", "n", " "), '', $return_str);
if( mb_strlen($return_str) > $num ) {
$return_str = mb_substr($return_str, 0, $num). '...';
}
return $return_str;
}
以下、出力方法
// 出力(descriptionに使いたいので300文字で出力)
<?php echo twotone_get_content(300); ?>
meta周りの出力とかはプラグインを使って自動で出力していたから特に気にしていなかったけど、会社で使うプラグインを減らしていこうという流れになり今回の調査につながりました。
案件によってうまく出力できていなかったりして検索エンジンにそれで登録されお客さんからのクレームが怖い...