我目前正在本地主机上玩,因为我要为拥有唱片店的客户设计电子商务。我已经安装了 Elementor、WooCommerce 和 ACF,起初尝试使用 elementor 自定义皮肤为我的产品创建自定义循环,在那里我很容易地添加了我想要的带有动态数据的字段。 然而,结果证明这是一场噩梦,因为我丢失了排序等内容,并且由于某种原因,添加到购物车按钮的行为很奇怪(单击它后我进入了单个产品页面)。 因此,我放弃了自定义帖子存档,转而使用经典产品存档,这不允许我直接向产品循环添加任何内容。
我尝试在我的functions.php文件中添加此代码(我的自定义字段名为vinyl_genre,它是自定义字段组的一部分):
add_action( 'woocommerce_after_shop_loop_item_title', 'custom_field_display_below_title', 2 );
function custom_field_display_below_title(){
global $product;
// Display ACF text
if( $text = get_field( 'vinyl_genre', $product->get_id() ) ) {
echo '<p class="archive-genre">' . $text . '</p>';
}
}
但它没有用,而是在存档中的每个产品标题下方我收到此警告:
警告::[...] 中的数组到字符串转换 \wp-content\themes\hello-theme-child-master\functions.php on line 36 Array
我是 php 的绝对n00b,但我在堆栈中找到了上面的示例,只是更改了字段名称,但无济于事。 有什么建议吗?
-- 编辑 --
使用 print_r($text)
给出一组值(因为黑胶唱片可以有多种流派)
答案 0 :(得分:1)
这意味着您的自定义字段值是一个包含多个值的数组。
改为使用以下内容:
add_action( 'woocommerce_after_shop_loop_item_title', 'custom_field_display_below_title', 2 );
function custom_field_display_below_title(){
global $product;
$values = (array) get_field( 'vinyl_genre', $product->get_id() ); // Get custom field values
// Display custom field values
if( ! empty($values) ) {
echo '<p class="archive-genre">' . implode( ', ', $values ) . '</p>';
}
}
代码位于活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。