You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Woocommerce产品页添加ACF字段到附加信息区域报错如何解决?

报错原因

你粘贴的是混合PHP与HTML的前端输出片段,不能直接插入到functions.php文件中。functions.php是PHP执行文件,默认已经开启PHP解析上下文,直接插入包含<开头的HTML标签或重复的<?php标记,就会触发解析器抛出「意外令牌"<"」的语法错误。

正确实现方案

你要实现的Woocommerce商品附加信息输出,需要通过钩子挂载的方式将输出逻辑封装后加入functions.php,具体操作如下:

  1. 先确认你已经在ACF后台创建了对应字段,且字段名和你代码中的一致
  2. 将下方代码添加到子主题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);
}
  1. 若你需要在后台商品发布页显示这些ACF字段,不需要修改代码,直接在ACF字段组的「显示条件」设置为「文章类型 > 等于 > 商品」即可自动挂载。

注意事项

  • 粘贴代码前确认functions.php末尾如果有?>结束标记,要把代码放在该标记之前,也可以直接删除末尾的?>(PHP文件末尾的结束标记可省略,能避免多余空格引发的额外报错)
  • 若需要调整字段的输出样式,可以给对应字段包裹HTML标签加自定义CSS即可

内容的提问来源于stack exchange,提问作者Kambro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:36:04