php - 在不覆盖核心文件的情况下向 BACS 帐户字段添加自定义字段

标签 php wordpress woocommerce hook-woocommerce payment-method

我有这种情况 - 我对其中一个 woocommerce 电子邮件模板进行了更改,但我确定 - 这些更改将在下一次 woocommerce 更新后丢失。

据我所知,我应该使用主题函数来绕过这个问题。

这是更改前的代码:

echo '<ul class="wc-bacs-bank-details order_details bacs_details">' . PHP_EOL;

                // BACS account fields shown on the thanks page and in emails
                $account_fields = apply_filters( 'woocommerce_bacs_account_fields', array(
                    'account_number'=> array(
                        'label' => __( 'Account Number', 'woocommerce' ),
                        'value' => $bacs_account->account_number
                    ),
                    'sort_code'     => array(
                        'label' => $sortcode,
                        'value' => $bacs_account->sort_code
                    ),
                    'iban'          => array(
                        'label' => __( 'IBAN', 'woocommerce' ),
                        'value' => $bacs_account->iban
                    ),
                    'bic'           => array(
                        'label' => __( 'BIC', 'woocommerce' ),
                        'value' => $bacs_account->bic
                    )

                ), $order_id );

                foreach ( $account_fields as $field_key => $field ) {
                    if ( ! empty( $field['value'] ) ) {
                        echo '<li class="' . esc_attr( $field_key ) . '">' . esc_attr( $field['label'] ) . ': <strong>' . wptexturize( $field['value'] ) . '</strong></li>' . PHP_EOL;
                    }
                }

                echo '</ul>';

这是我要插入的自定义帐户字段代码:

'merkis' => array(
    'label' => $merkis,
    'value' => $pasutijums
)

如何在不覆盖核心文件的情况下插入自定义代码?

谢谢

最佳答案

Never Override core files and always use the WooCommerce included hooks to make code customizations.

如果您没有找到通过自定义 Hook 函数进行此更改的方法,正如您将在提供的代码中看到的那样,您可以使用 woocommerce_bacs_account_fields 过滤器 Hook 添加您的自定义代码,而不覆盖任何 WooCommerce 核心文件。

因此,在 BACS 帐户字段中添加新字段的代码将是:

add_filter( 'woocommerce_bacs_account_fields', 'custom_bacs_account_field', 10, 2);
function custom_bacs_account_field( $account_fields, $order_id ) {
    $account_fields['merkis' ] = array(
        'label' => $merkis,
         'value' => $pasutijums
    );
    return $account_fields;
}

代码位于您的事件子主题(或主题)的 function.php 文件中或任何插件文件中。

这段代码已经过测试并且可以工作......

关于php - 在不覆盖核心文件的情况下向 BACS 帐户字段添加自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42181880/

相关文章:

php - 我认为这是一个sql问题,但我似乎无法摆脱这个错误消息

wordpress - 简单的 WP 查询即将发生的事件以及开始或结束日期

php - 如何嵌套产品并更改 Woocommerce 中的显示?

tags - WordPress 网站帖子被重定向到 Youtube 视频

php - Woocommerce - 使用特定属性列出产品

wordpress - 如何获取日期之间的 Woocommerce 订单

php - 如何将 Bootstrap 中的某个部分链接到导航栏

php - Laravel API 身份验证(护照)隐式授予 token - 401 错误

javascript - 无法使用 echo 查看输出

javascript - 为什么我不能在 masonry 容器中添加toggleClass?