web-dev-qa-db-ja.com

ACFによるボディクラスの追加

管理者が色を指定できるように、ACFでラジオボタンフィールドを作成しました。例えば:

  • ブルー:ブルー
  • ピンク:ピンク

これをheader.phpの<body <?php body_class(); ?>経由でクラスとして出力したいのですが。これは可能ですか?

私は現在header.phpのようにクラスを出力しています。

<div id="page" class="site <?php the_field('package_colour',$post->ID); ?>">
2
Sam

body_class filterにフックしてそこにあなたのフィールドを追加してください。 get_queried_object_id() ではなく get_the_ID() からIDを取得する方が良いかもしれません。

add_filter( 'body_class', 'wpse_20160118__body_class' );

function wpse_20160118__body_class( $classes ) {

    if ( $package_colour = get_field( 'package_colour', get_queried_object_id() ) ) {

        $package_colour  = esc_attr( trim( $package_colour ) );

        $classes[]       = $package_colour;
    }

    return $classes;
}
4
jgraup