php - woocommerce_add_to_cart - woocommerce_order_status_completed
Agregar un campo personalizado a los campos de cuenta BACS sin anular los archivos principales (1)
Tengo esta situación: realicé cambios en una de las plantillas de correo electrónico de woocommerce, pero estoy seguro de que estos cambios se perderán después de la próxima actualización de woocommerce.
Como sé, debería usar las funciones del tema para eludir este problema.
Este es el código antes de los cambios:
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>'';
Aquí está el código de campo de cuenta personalizado que quiero insertar:
''merkis'' => array(
''label'' => $merkis,
''value'' => $pasutijums
)
¿Cómo puedo insertar mi código personalizado sin anular ese archivo central?
Gracias
Nunca anule los archivos centrales y siempre use los ganchos incluidos de WooCommerce para hacer personalizaciones de código.
Si no ha encontrado la manera de realizar este cambio a través de una función personalizada, como verá en el código provisto, puede usar woocommerce_bacs_account_fields
filter hook para agregar su código personalizado, sin anular ningún archivo core de WooCommerce.
Entonces, el código para agregar un nuevo campo en los campos de cuenta BACS será:
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;
}
El código va en el archivo function.php de su tema hijo activo (o tema) o también en cualquier archivo de complemento.
Este código está probado y funciona ...