案件で、初めてwordpressの構築を任せていただきました。勉強になることばかりで楽しんでいます。
自分の整理がてら、学んだことをまとめてみます。
関数化
例えば、カスタム投稿でACFのデータを取得する際は、なるべく細かく関数化して分けておく。そして、作った関数たちを組み合わせる。
関数化しておくと、再利用ができるし、同じフィールドの値に関して統一性ができてスッキリするので、便利とのこと。
(アーカイブページと記事詳細ページなど複数回そのデータを使うような場合。一度きりしか使わないのであれば、コードが増えるのでいらない)
例えば、カスタム投稿ページにて投稿記事一つを出力する場合。
記事のタイトル
の他にテキスト1
とテキスト2
の値があったとする。
<?php
// テキスト1を取得する
function get_post_text1 ()
{
if ($text1 = get_field('text_field1')) {
return '<p>' . $text1 . '</p>';
}
}
// テキスト2を取得する
function get_post_text2 ()
{
if ($text2 = get_field('text_field2')) {
return '<p>' . $text2 . '</p>';
}
}
function get_new_post ()
{
echo '<p>このページでは記事を紹介します。</p>'
the_title(); // タイトルの出力
echo get_post_text1(); // text_field1の値を出力
echo get_post_text2(); // text_field2の値を出力
}
引数
また、the_title();
は引数に、値の前後に出力したい値を指定することでマークアップごとに出力できる。
<?php
echo the_title('タイトルの前に表示したいテキスト', 'タイトルの後に表示したいテキスト', 'boolean:出力するかどうか');
これを利用することで、同じ値でもマークアップを変更して出力することができる。
例えば、アーカイブページと記事詳細ページで、同じ値だけどクラス名が異なっているときに使用する。
function get_post_text1 ($before_html, $after_html) {
if ($text1 = get_field('text_field1')) {
return $before_html . $text1 . $after_html;
}
}
// archive.php
echo get_post_text1('<p class="archive__description>"', '</p>');
// single.php
echo get_post_text1('<p class="single__description -strong>"', '</p>');
あとは、引数にget_the_ID();
を指定することで、関数内とか、ループ内でも自由にデータとってくることができるのかな〜。
この辺りが、まだわかっていないのでまた理解したらまとめよ。