bestsource

핵심 파일을 재정의하지 않고 BACS 계정 필드에 사용자 정의 필드 추가

bestsource 2023. 9. 26. 22:26
반응형

핵심 파일을 재정의하지 않고 BACS 계정 필드에 사용자 정의 필드 추가

저는 이런 상황이 있습니다. 우커머스 이메일 템플릿 중 하나를 변경했지만, 이 변경 사항은 다음 우커머스 업데이트 후에 손실될 것이라고 확신합니다.

제가 알기로는 테마 기능을 사용해서 이 문제를 우회해야 할 것 같습니다.

변경 전 코드는 다음과 같습니다.

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
)

코어 파일을 덮어쓰지 않고 사용자 지정 코드를 삽입하려면 어떻게 해야 합니까?

감사해요.

코어 파일을 재정의하지 말고 항상 WooCommerce에 포함된 후크를 사용하여 코드를 사용자 지정합니다.

제공된 코드에서 볼 수 있듯이 사용자 지정 후킹 기능을 통해 이러한 변경을 수행할 방법을 찾지 못한 경우 필터 후킹을 사용하여 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;
}

코드가 작동합니다.활성 하위 테마(또는 테마)의 php 파일 또는 플러그인 파일에 있습니다.

이 코드는 테스트를 거쳐 작동합니다.

언급URL : https://stackoverflow.com/questions/42181880/adding-a-custom-field-to-bacs-account-fields-without-overriding-core-files

반응형