カスタムフィールドのテキストを文字数を制限して表示する方法
WordPreesのカスタムフィールドに入力されているテキストを、文字数を制限して表示する方法の備忘録です。
例えば、記事の一覧にカスタムフィールドのテキストを表示する際に、100文字に限定して超過してる場合は文末に「…」を表示します。
カスタムフィールドの値を表示する
初めに、カスタムフィールドの値を表示する箇所に以下のコードを記述します。
<?php echo post_custom('field_name'); ?>
post_custom()
でカスタムフィールドの値を取得して、echo
で表示するシンプルなコードです。
「field_name」の部分には、該当するカスタムフィールド名を設定します。
文字数を制限する
続いて、mb_substr()
を使用して文字数制限を追加します。
<?php echo mb_substr((post_custom('field_name')),0,100); ?>
mb_substr()
は、指定した開始位置から文字数分のテキストを取得する関数です。
サンプルコードでは、「100」を設定して先頭から100文字のテキストを取得しています。
条件分岐を追加する
最後に、テキストを省略した場合のみ文末に「…」を追加するように、if
を使用した条件分岐を追加します。
<?php
$field_text = post_custom('field_name');
$limit = 100;
if (mb_strlen($field_text) >= $limit) {
$field_text = mb_substr($field_text, 0, $limit) . '…';
}
echo $field_text;
?>
制限する文字数を$limitに設定して、mb_strlen()
で取得した文字数と比較して条件分岐しています。
文字数が$limit
に設定した数(サンプルでは100文字)より大きい場合のみ、文末に「…」を追加します。
以上で、カスタムフィールドのテキストを文字数制限をつけて表示するコードの完成です。
ACFを使用している場合
ACF(Advanced Custom Field)を使用して作成したカスタムフィールドの場合、get_field()
を使用してテキストを表示します。
<?php
$field_text = get_field('field_name');
$limit = 100;
if (mb_strlen($field_text) >= $limit) {
$field_text = mb_substr(strip_tags($field_text), 0, $limit) . '…';
}
echo $field_text;
?>
表示するテキストはstrip_tags()
を使用して不要なタグを除去しています。