使用ACF选择字段在灵活的内容布局中添加要div的类

时间:2018-08-15 作者:WebBee

我使用ACF Pro灵活的内容字段构建了一个简单的页面生成器。我希望用户能够使用单选按钮选择器为部分选择背景颜色。我已经设置了ACF字段,但我想在模板中选择值,并在div中回显一个类名,然后用CSS设置样式。

但我无法显示类名,这是我目前所拥有的:

if( get_field(\'background\', $post->ID) == \'white\' ):  
    $background = \'white\';
elseif ( get_field(\'background\', $post->ID) == \'light_grey\' ): 
    $background = \'light-grey\';
elseif( get_field(\'background\', $post->ID) == \'dark_grey\' ):
    $background = \'dark-grey\';
else:
    $background = \'\';
endif;
目前根本没有打印出来。此代码位于一个由我的主模板调用的文件中,该文件包含不同布局的代码。

Ok修订代码:

if( get_row_layout() == \'full_width_col\' ):

        $bg = get_sub_field(\'row_background\');

                        if( $bg ) {
                                $background = $bg[\'value\'];
                        } else {
                                $background =\'\';
                                    }  ?>

<div id="row-wrap-<?php echo $row;?>" class="<?php echo $background; ?> row-wrapper full-width clear">
            <div id="row-<?php echo $row;?>" class="row">
                 <?php get_template_part(\'template-parts/acf/layout\', \'full-width-col\'); ?>
             </div>
</div>
<?php endif; ?>

1 个回复
最合适的回答,由SO网友:rudtek 整理而成

您应该显示整个代码。您上面发布的内容根本不会输出。此外,没有必要分配变量,因为您已经有了一个值。。。

您的字段值在ACF中以这种方式为单选按钮设置:

white : White
light-grey : Light Grey
dark-grey : Dark Grey
(注意冒号周围的空格)

现在了解您的代码:

$bg = get_field(\'background\', $post->ID);
if( $bg ) {
    $background = $bg[\'value\'];
} else {
    $background =\'\';
}

echo \'<div class="mybackground \'.$background.\'">hi there</div>\';
然后您的css:

.white {
 background-color:white;
}
.dark-grey {
 background-color:grey;
}
.light-grey {
 background-color:#f0f0f0;
}
你需要为你实际做的事情定制一点,但这应该是可行的。

如果将“格式值”设置为“仅返回值”,则更改此行:

$background = $bg[\'value\'];
对此:

$background = $bg;

结束

相关推荐

使用ACF选择字段在灵活的内容布局中添加要div的类 - 小码农CODE - 行之有效找到问题解决它

使用ACF选择字段在灵活的内容布局中添加要div的类

时间:2018-08-15 作者:WebBee

我使用ACF Pro灵活的内容字段构建了一个简单的页面生成器。我希望用户能够使用单选按钮选择器为部分选择背景颜色。我已经设置了ACF字段,但我想在模板中选择值,并在div中回显一个类名,然后用CSS设置样式。

但我无法显示类名,这是我目前所拥有的:

if( get_field(\'background\', $post->ID) == \'white\' ):  
    $background = \'white\';
elseif ( get_field(\'background\', $post->ID) == \'light_grey\' ): 
    $background = \'light-grey\';
elseif( get_field(\'background\', $post->ID) == \'dark_grey\' ):
    $background = \'dark-grey\';
else:
    $background = \'\';
endif;
目前根本没有打印出来。此代码位于一个由我的主模板调用的文件中,该文件包含不同布局的代码。

Ok修订代码:

if( get_row_layout() == \'full_width_col\' ):

        $bg = get_sub_field(\'row_background\');

                        if( $bg ) {
                                $background = $bg[\'value\'];
                        } else {
                                $background =\'\';
                                    }  ?>

<div id="row-wrap-<?php echo $row;?>" class="<?php echo $background; ?> row-wrapper full-width clear">
            <div id="row-<?php echo $row;?>" class="row">
                 <?php get_template_part(\'template-parts/acf/layout\', \'full-width-col\'); ?>
             </div>
</div>
<?php endif; ?>

1 个回复
最合适的回答,由SO网友:rudtek 整理而成

您应该显示整个代码。您上面发布的内容根本不会输出。此外,没有必要分配变量,因为您已经有了一个值。。。

您的字段值在ACF中以这种方式为单选按钮设置:

white : White
light-grey : Light Grey
dark-grey : Dark Grey
(注意冒号周围的空格)

现在了解您的代码:

$bg = get_field(\'background\', $post->ID);
if( $bg ) {
    $background = $bg[\'value\'];
} else {
    $background =\'\';
}

echo \'<div class="mybackground \'.$background.\'">hi there</div>\';
然后您的css:

.white {
 background-color:white;
}
.dark-grey {
 background-color:grey;
}
.light-grey {
 background-color:#f0f0f0;
}
你需要为你实际做的事情定制一点,但这应该是可行的。

如果将“格式值”设置为“仅返回值”,则更改此行:

$background = $bg[\'value\'];
对此:

$background = $bg;

相关推荐