当前位置: 首页 > 知识库问答 >
问题:

在Woocommerce订单详细信息和所有电子邮件中显示高级自定义域值

勾炜
2023-03-14

我用ACF插件创建了一个高级定制字段,以便在Woocommerce产品编辑页面上添加附加信息。这是一个区分T恤模板的副标题。我能够使价值出现在产品页面前端,但我需要这些信息出现在订单细节和所有电子邮件中,也许作为订单元。提前谢了。

共有1个答案

阙俊友
2023-03-14

请在fucntions.php文件中尝试下面的代码..

 add_action( 'woocommerce_before_add_to_cart_button', 'add_custom_field', 0 );

function add_custom_field() {
    global $product;             // Changed this

    // Added this too (compatibility with WC +3) 
    $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

    echo "<div class='produto-informacoes-complementares'>";
    echo get_field( 'woo_title', $product_id );
    echo "</div>";

    return true;
}


add_filter( 'woocommerce_add_cart_item_data', 'save_my_custom_product_field', 10, 2 );

function save_my_custom_product_field( $cart_item_data, $product_id ) {

    $custom_field_value = get_field( 'woo_title', $product_id, true );

    if( !empty( $custom_field_value ) ) 
    {
        $cart_item_data['woo_title'] = $custom_field_value;

        // below statement make sure every add to cart action as unique line item
        $cart_item_data['unique_key'] = md5( microtime().rand() );
    }
    return $cart_item_data;
}

add_filter( 'woocommerce_get_item_data', 'render_meta_on_cart_and_checkout', 10, 2 );

function render_meta_on_cart_and_checkout( $cart_data, $cart_item ) {
    $custom_items = array();
    // Woo 2.4.2 updates
    if( !empty( $cart_data ) ) {
        $custom_items = $cart_data;
    }
    if( isset( $cart_item['woo_title'] ) ) {
        $custom_items[] = array( "name" => "ACF value:", "value" => $cart_item['woo_title'] );
    }
    return $custom_items;
}

function add_order_item_meta_acf( $item_id, $values ) {

    wc_add_order_item_meta( $item_id, 'acf', $values [ 'woo_title' ] );
  }
add_action( 'woocommerce_add_order_item_meta', 'add_order_item_meta_acf' , 10, 2);

在订单表之后显示订单详细信息页面中的Acf值

add_action ('woocommerce_order_details_after_order_table', 'order_detail_page', 20);

  function order_detail_page($order_id) {

    //  global $post;
    // $order = wc_get_order( $post->ID ); 

     $order = new WC_Order( $order_id );
     $items = $order->get_items();
     foreach ( $items as $item ) {
          $product_id = $item['product_id']; 
         }

  if (get_field('woo_title',  $product_id)) {
   ?>
    <p class="WooCommerce">ACF value: <?php the_field('woo_title',  $product_id);    ?><p>      
    <?php 
     }
   }```
 类似资料:
  • 我正在搜索和尝试它2天没有成功,请帮助。 我想筛选woocommerce订单,以便根据产品属性将其他详细信息从db添加到订单详细信息页面,但我找不到适合此任务的woocommerce操作/筛选器挂钩。这里假设变量; 如果,那么我需要将自定义数据从数据库添加到订单详细信息页面。 注意:我不想添加额外的元框,而是想更改订单明细表: 将默认产品映像替换为存储在数据库和中的映像, 在产品名称下面添加包含自

  • 我试图自定义我的Woocommerce电子邮件,我已经为它创建了一个html模板,它已经可以工作了。 我的问题是,它没有显示像这样的WooCommerce变量: 这样 或者这样 我总是这样说: 下面是HTML代码的一个片段: 所以它是一个普通的html文件,在我需要它们的地方带有这个php变量。我把html文件放进了Woocommerce 我是否必须将其全部打包到一个php文件中,或者如何让变量如

  • 我正在使用WordPress4.8.1和bridge主题 关于从新订单模板电子邮件中删除价格,我面临一些问题 我想删除价格列,但是我删除了总计和小计,但没有得到任何东西来删除价格列,因为产品正在浏览文件。 我发现这是来自这个代码: 在电子邮件订单详细信息中。php模板,我已经从woocommerce模板文件夹复制到我的子主题。 但是,如何定制这个钩子“wc_get_email_order_item

  • 好的,基本上我们在我们的WooCommerce商店中使用ACF创建了一个自定义字段,以便为特定的产品添加一个“发货延迟”通知。

  • 我正在使用一个自定义的结帐字段,在我的woocommerce商店的结帐页面上为我的客户提供一个“发送到业务地址”选项。大部分代码工作正常,但我无法显示他们是否选中了后端管理订单详细信息中的复选框。 我已经添加了一个自定义结账字段到我的WooCommerce商店,并将数据保存到订单元: 这里是我试图在管理命令部分显示这些数据的地方。我已经尽可能地关注了前面关于这方面的话题,但没有任何效果。 这个问题

  • null 我希望能够从数组中获取某些元值,例如、、、、等。 这个PHP代码段将添加一个字段的订单电子邮件,但我如何编辑这一点,我可以让它显示一些元从数组? 对于特定的WooCommerce订单,我使用 这表明: