【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);
?>