【WordPressプラグイン】Advanced Custom Fieldsの出力
カスタムフィールドのプラグインはSmart Custom Fieldsのほうがシンプルで(無料だし)好きなのですが、ACFを使わねばならないときもあるので備忘録。
繰り返しフィールドの出力
<?php if (have_rows('pickup', 'option')) : ?>
<div class="list">
<?php while (have_rows('pickup', 'option')) : the_row(); ?>
<?php
$img = get_sub_field('pickup_bnr');
$link = get_sub_field('pickup_url');
?>
<div class="list_item">
<a href="<?php echo $link; ?>">
<img src="<?php echo $img; ?>">
</a>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
オプションページで設定した、繰り返しグループ「pickup」の「pickup_bnr」「pickup_url」というフィールドを出力しています。
オプションページの出力
オプションページの作成は下記をfunction.phpに記述。
//ACFオプションページ
if (function_exists('acf_add_options_page')) {
acf_add_options_page(array(
'page_title' => 'サイトテーマ設定', // ページタイトル
'menu_title' => 'テーマ設定', // メニュータイトル
'menu_slug' => 'site-settings', // メニュースラッグ
'capability' => 'edit_posts',
'redirect' => false,
'position' => 30
));
acf_add_options_sub_page(array( // 子ページ1
'page_title' => '全体設定', // ページタイトル
'menu_title' => 'ALL', //ここを日本語にするとエラーになるので注意!
'parent_slug' => 'site-settings', // 親メニューのスラッグ
));
acf_add_options_sub_page(array( // 子ページ2
'page_title' => 'トップページ設定',
'menu_title' => 'TOP',
'parent_slug' => 'site-settings',
));
}
サブページのメニュータイトルを日本語で設定するとエラーになるので注意が必要です。
出力は下記。引数に「option」を追加します。
<?php $image = get_field('school_img', 'option');
if ($image) { ?>
<img src="<?php echo $image; ?>">
<?php } ?>
そのほかのオブジェクトから出力
get_field()の引数に取得したいオブジェクトを指定します。
<?php
$post_id = 1; // post ID
$post_id = "user_2"; // ユーザーID
$post_id = "category_3"; // カテゴリーID = 3
$post_id = "event_4"; // カスタムタクソノミー(例:event)ID = 4
get_field('field', $post_id);
?>
参考
- ACF | get_field()
https://www.advancedcustomfields.com/resources/get_field/
関連記事
-
WordPress 関数の使い方
【WordPress】get_template_part の使い方
-
WordPress
【WordPress】テンプレート階層
-
WordPress
【WordPress】記事一覧で年別タイトルをつける
-
WordPress
【WordPress】ループ内でカテゴリーの取得と表示
-
WordPress 関数の使い方
【WP】wp_get_archivesがリンク先エラーになる
-
PHP WordPress
term_description()からpタグを消す
-
WordPress 関数の使い方
【WordPress】サブループで記事の読み込み
-
WordPress プラグイン
【WordPressプラグイン】Smart Custom Fieldsの出力