php 从Woocommerce电子邮件通知中的订单表中删除发货行

ldioqlga  于 2023-01-12  发布在  PHP
关注(0)|答案(2)|浏览(177)

在WooCommerce中,我试图从电子邮件通知的订单表中删除发货行。

brjng4g3

brjng4g31#

Overriding woocommerce templates via the theme,删除电子邮件通知中的发货行可以很容易地完成,添加一些代码到emails/email-order-details.php模板。
下面是从**line 51**开始的摘录。因此,您将用以下代码替换html开始<tfoot>标记和结束</tfoot>标记之间的所有代码:

<tfoot>
            <?php
                if ( $totals = $order->get_order_item_totals() ) {
                    $i = 0;
                    foreach ( $totals as $key_total => $total ) {
                        $i++;
                        if( $key_total != 'shipping' ):
                        ?><tr>
                            <th class="td" scope="row" colspan="2" style="text-align:<?php echo $text_align; ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo $total['label']; ?></th>
                            <td class="td" style="text-align:<?php echo $text_align; ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo $total['value']; ?></td>
                        </tr><?php
                        endif;
                    }
                }
                if ( $order->get_customer_note() ) {
                    ?><tr>
                        <th class="td" scope="row" colspan="2" style="text-align:<?php echo $text_align; ?>;"><?php _e( 'Note:', 'woocommerce' ); ?></th>
                        <td class="td" style="text-align:<?php echo $text_align; ?>;"><?php echo wptexturize( $order->get_customer_note() ); ?></td>
                    </tr><?php
                }
            ?>
        </tfoot>

这是经过测试的,可以正常工作。所以你会得到类似 (没有发货行)

7kqas0il

7kqas0il2#

在@LoicTheAztec上扩展并更新至2022年:
用下面的代码替换“email-order-details.php”WooCommerce模板中的<tfoot>
1.向foreach循环添加一个键名key_total
1.添加条件以忽略打印key_total === 'shipping'时的行

<tfoot>
            <?php
            $item_totals = $order->get_order_item_totals();

            if ( $item_totals ) {
                $i = 0;
                // Add "$key_total" to be able to grab the key name
                foreach ( $item_totals as $key_total => $total ) {
                    $i++;
                    // Add conditional to only print row if row key is not "shipping" 
                    if( $key_total !== 'shipping' ):
                        ?>
                        <tr>
                            <th class="td" scope="row" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo wp_kses_post( $total['label'] ); ?></th>
                            <td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>; <?php echo ( 1 === $i ) ? 'border-top-width: 4px;' : ''; ?>"><?php echo wp_kses_post( $total['value'] ); ?></td>
                        </tr>
                        <?php
                    endif;
                }
            }
            
            if ( $order->get_customer_note() ) {
                ?>
                <tr>
                    <th class="td" scope="row" colspan="2" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php esc_html_e( 'Note:', 'woocommerce' ); ?></th>
                    <td class="td" style="text-align:<?php echo esc_attr( $text_align ); ?>;"><?php echo wp_kses_post( nl2br( wptexturize( $order->get_customer_note() ) ) ); ?></td>
                </tr>
                <?php
            }
            ?>
        </tfoot>

我们可以看到一个键名称在OrderDetails对象中布局的示例。

相关问题