【问题标题】:Woocommerce: Order Summary in checkout Order comments field (PHP)Woocommerce:结帐订单评论字段中的订单摘要(PHP)
【发布时间】:2017-05-28 14:22:20
【问题描述】:

我希望 woocommerce 订单的订单摘要显示在结帐时的字段中。我可以将纯文本放在一个字段中,但是当我尝试添加一个钩子时,它会抛出错误代码。这是向字段添加默认文本的代码。位于functions.php

add_filter( 'woocommerce_checkout_fields' , 'default_values_checkout_fields' );

function default_values_checkout_fields( $fields ) {

$fields['order']['order_comments']['default'] = ' I would like the hook here ';

return $fields;
}

此代码在结帐时输出一个表格:

<table class="shop_table woocommerce-checkout-review-order-table">

<tbody>
    <?php
        do_action( 'woocommerce_review_order_before_cart_contents' );

        foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
            $_product     = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );

            if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_checkout_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
                ?>
                <tr class="<?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
                    <td class="product-name">
                        <?php echo apply_filters( 'woocommerce_cart_item_name', $_product->get_title(), $cart_item, $cart_item_key ) . '&nbsp;'; ?>
                                                                            </td>
                </tr>
                <?php
            }
        }

这是一个表格,但如果不是表格,我希望表格中的文本显示在字段中。

【问题讨论】:

  • 你说的抛出的错误是什么?
  • 请澄清您的问题,因为它现在非常不完整且不清楚。
  • 解析错误:语法错误,/homepages/6/d651498966/htdocs/clickandbuilds/rxbsystem/wp-content/themes/woffice-child/functions.php 中出现意外的 'woocommerce_review_order_befor' (T_STRING) 147
  • woo commerce 使用一个名为 variant-Details 的类来显示放置在购物车中的产品的详细信息,我希望将这些详细信息回显到字段中

标签: php wordpress woocommerce checkout cart


【解决方案1】:

由于您的问题不是很详细,这里有一个示例,该示例将在 Order cmets 结帐字段中显示所有产品标题:

add_filter( 'woocommerce_checkout_fields' , 'custom_order_comments_checkout_fields' );
function custom_order_comments_checkout_fields( $fields ) {

    if ( !WC()->cart->is_empty()):

    $output = '';
    $count = 0;
    $cart_item_count = WC()->cart->get_cart_contents_count();

    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ):

        $count++;

        // Displaying the product title
        $output .= 'Product title: ' . $cart_item['data']->post->post_title;

        // New line (for next item)
        if($count < $cart_item_count)
            $output .= '
';

    endforeach;

    $fields['order']['order_comments']['default'] = $output;

    endif;

    return $fields;
}

代码进入您的活动子主题(或主题)的 function.php 文件中。或者也可以在任何插件 php 文件中。

此代码将显示在结帐 Order cmets 字段中,如下所示:

Product title: My Product title 1
Product title: My Product title 2
...

您可以轻松地输出产品数量和购物车对象中的所有类型的数据......您只需在问题中明确定义您想要输出什么以及如何输出(不要忘记这必须是原始数据就像在文本区域字段中输出的那样)

代码已经过测试并且可以工作。

【讨论】:

  • 这实际上几乎给了我想要的东西,我的问题还不够具体,我猜。目前在结帐时购物车显示“订单摘要”:理发预订×1 详细信息:日期:2017 年 1 月 20 日时间:上午 10:30 服务:理发(成人)发型师:毛这些详细信息尚未在任何字段中输入woocommerce 结帐,但通过另一个插件,该插件能够在实际 woocommerce 产品“理发预订”的末尾添加这些详细信息。
  • 您的解决方案有效,因为它在订单说明中显示了理发预订产品,但实际上我所追求的是下面的详细信息。这些变量未随产品列出。
  • 这个答案完成了我到目前为止需要它做的事情,我需要进一步调查插件以了解它在显示文本时如何显示文本我会将它传递给你,但你提供的解决方案确实到目前为止我需要它做什么,谢谢。
猜你喜欢
  • 2023-03-06
  • 2013-03-09
  • 2014-12-17
  • 1970-01-01
  • 2017-11-07
  • 2018-02-06
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多