WordPressのカスタムフィールドは非常に便利な機能の一つです。これを利用して、投稿やページに追加の情報を保存できます。この記事では、カスタムフィールドに保存されたテキストを行ごとに読み込み、HTMLのliタグで囲んで、整形されたリストを表示する方法を紹介します。
カスタムフィールドからデータを取得する
まず最初に、WordPressのget_post_meta()関数を使用して、現在の投稿から特定のカスタムフィールドのデータを取得します。
$post_id = get_the_ID();
$custom_field_value = get_post_meta($post_id, 'custom_field_name', true);
このコードは、現在の投稿のIDをget_the_ID()関数で取得し、それとカスタムフィールドの名前(この例ではcustom_field_name)を指定して、その値を取得します。
取得したデータを行ごとに分割する
次に、PHPのexplode()関数を使用して、取得したカスタムフィールドの値を改行コードで分割します。これによって、各行が配列の一つの要素となります。
$lines = explode("\n", $custom_field_value);
各行をliタグで囲む
取得して分割したテキストの各行をliタグで囲むために、array_map()関数を利用します。これにより、テキストの各行がリストの一つの項目として表示されます。
$li_elements = array_map(function($line) {
return "<li>" . htmlspecialchars($line) . "</li>";
}, $lines);
htmlspecialchars()関数は、テキスト中の特殊なHTML文字を安全にエスケープするために使用します。これによって、テキスト中のHTMLタグがブラウザによって解釈されず、そのまま表示されるようになります。
生成したli要素を結合し、ulリストを出力する
最後に、implode()関数を使って、生成したli要素を結合し、ulリストとして出力します。
$ul_content = implode("\n", $li_elements);
echo "<ul>\n" . $ul_content . "\n</ul>";
完全なコード例
<?php
// 現在の投稿のIDを取得
$post_id = get_the_ID();
// カスタムフィールドからデータを取得
$custom_field_value = get_post_meta($post_id, 'custom_field_name', true);
// 改行コードでテキストを分割して配列にする
$lines = explode("\n", $custom_field_value);
// 各行を<li>タグで囲む
$li_elements = array_map(function($line) {
return "<li>" . htmlspecialchars($line) . "</li>";
}, $lines);
// 配列の要素を結合して、一つの文字列にする
$ul_content = implode("\n", $li_elements);
// 最終的な<ul>のHTMLを生成して出力
echo "<ul>\n" . $ul_content . "\n</ul>";
?>
注意点と最終的なアドバイス
このコード例はシンプルに保つためにエラーチェックを含んでいませんが、実際の使用時にはカスタムフィールドが空でないことを確認する等のエラーチェックを行うことをおすすめします。
また、これは基本的な例ですので、より高度な用途やデザインのカスタマイズを考慮する場合は、さらにコードの調整が必要になる場合があります。