我正在尝试向WooCommerce网站中的单个产品页面添加一系列高级自定义字段值。
此字段是网站管理员会选中的复选框,我希望这些值显示在单个产品页面中。
我已经找到了如何在子主题的functions.php文件中使用此代码显示值的方法:
add_action( 'woocommerce_product_tabs', 'deco_display_acf_field_under_images', 30 );
function deco_display_acf_field_under_images() {
echo the_field('cuidados');
}
“ cuidados”是字段名称。
它可以工作,但是只显示用逗号分隔的值。
现在,我想使用一种更高级的方式来显示值,例如我在ACF文档中找到的用于显示复选框值的示例:
<?php
// vars
$colors = get_field('colors');
// check
if( $colors ): ?>
<ul>
<?php foreach( $colors as $color ): ?>
<li><?php echo $color; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
我不了解PHP,但是由于语法原因,我知道这对我的functions.php文件不起作用。
您能帮我弄清楚如何实现吗?
谢谢。
答案 0 :(得分:1)
由于get_field('cuidados')
的值是由逗号分隔的值组成的字符串,因此您可以尝试以下操作:
$colors_str = get_field('colors');
if( ! empty($colors_str) ) {
// Removing the space after the coma (if there is any)
$colors_str = str_replace(', ', ',', $colors_str);
// Convert the string as an array
$colors = explode(',', $colors_str);
// Html output
echo '<ul><li>' . implode( '</li><li>', $colors ) . '</li></ul>';
}
它应该可以工作...因此在您的钩子函数中:
add_action( 'woocommerce_product_tabs', 'deco_display_acf_field_under_images', 30 );
function deco_display_acf_field_under_images() {
global $product;
$colors_str = get_field('colors', $product->get_id());
if( ! empty($colors_str) ) {
// Removing the space after the coma (if there is any
$colors_str = str_replace(', ', ',', $colors_str);
// Convert the string as an array
$colors = explode(',', $colors_str);
// Html output
echo '<ul><li>' . implode( '</li><li>', $colors ) . '</li></ul>';
}
}
代码进入活动子主题(或活动主题)的functions.php文件中。
答案 1 :(得分:0)
尝试
add_action('woocommerce_product_tabs', 'deco_display_acf_field_under_images', 30);
function deco_display_acf_field_under_images() {
// fields MUST be an array in the format array(a,b,c) (or [a,b,c])
$fields = the_field('cuidados');
if (is_string($fields)) $fields = explode(",", $fields);
// check
if ($fields): ?>
<ul>
<?php foreach ($fields as $field): ?>
<li><?php echo $field; ?></li>
<?php endforeach; ?>
</ul>
<?php endif;
}