Woocommerce产品页添加ACF字段到附加信息区域报错如何解决?
报错原因
你粘贴的是混合PHP与HTML的前端输出片段,不能直接插入到functions.php文件中。functions.php是PHP执行文件,默认已经开启PHP解析上下文,直接插入包含<开头的HTML标签或重复的<?php标记,就会触发解析器抛出「意外令牌"<"」的语法错误。
正确实现方案
你要实现的Woocommerce商品附加信息输出,需要通过钩子挂载的方式将输出逻辑封装后加入functions.php,具体操作如下:
- 先确认你已经在ACF后台创建了对应字段,且字段名和你代码中的一致
- 将下方代码添加到子主题
functions.php文件的末尾,不要覆盖原有代码:
// 在Woocommerce商品默认规格下方输出ACF附加信息 add_action('woocommerce_product_meta_end', 'custom_product_extra_fields'); function custom_product_extra_fields() { global $product; $product_id = $product->get_id(); // 输出出版商链接 $editeur = get_field('editeur', $product_id); if ($editeur) : ?> <a href="<?php echo esc_url(get_term_link($editeur)); ?>"><?php echo esc_html($editeur->name); ?></a> <?php endif; // 输出基础ACF字段 the_field('date_de_parution', $product_id); the_field('nombre_de_volumes', $product_id); the_field('nombre_de_pages', $product_id); the_field('isbn', $product_id); // 输出presentation链接 $presentation = get_field('presentation', $product_id); if ($presentation) : ?> <a href="<?php echo esc_url(get_term_link($presentation)); ?>"><?php echo esc_html($presentation->name); ?></a> <?php endif; the_field('illustrateur', $product_id); }
- 若你需要在后台商品发布页显示这些ACF字段,不需要修改代码,直接在ACF字段组的「显示条件」设置为「文章类型 > 等于 > 商品」即可自动挂载。
注意事项
- 粘贴代码前确认
functions.php末尾如果有?>结束标记,要把代码放在该标记之前,也可以直接删除末尾的?>(PHP文件末尾的结束标记可省略,能避免多余空格引发的额外报错) - 若需要调整字段的输出样式,可以给对应字段包裹HTML标签加自定义CSS即可
内容的提问来源于stack exchange,提问作者Kambro
相关产品推荐
相关产品推荐

