WooCommerce 结帐字段:在 post 元字段值上使用 str_replace
WooCommerce checkout fields: using str_replace on a post meta field value
我需要替换自定义结帐字段中的一些字符。
这是我的自定义结帐字段的全部代码,(也许我们可以在这里使用 str_replace)
/* Add the field to the checkout */
add_action( 'woocommerce_after_checkout_billing_form', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field">';
woocommerce_form_field( 'phone_sabet', array(
'type' => 'tel',
'required' => true,
'clear' => true,
'class' => array('my-field-class form-row-first'),
'label' => __(''),
'placeholder' => __(''),
'description' => '',
), $checkout->get_value(('phone_sabet')));
echo '</div>';
}
这是自定义字段更新时的代码部分
/* Update the order meta with field value */
add_action( 'woocommerce_checkout_update_order_meta','my_custom_checkout_field_update_order_meta' );
function my_custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST['phone_sabet'] ) ) {
update_post_meta( $order_id, 'Phone', sanitize_text_field( $_POST['phone_sabet'] ) );
}
}
我厌倦了使用 str_replace 并将其更改为以下但运气不好。
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );
function my_custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST['phone_sabet'] ) ) {
update_post_meta( $order_id, 'Phone', sanitize_text_field( $_POST['phone_sabet'] ) );
$getMeta = get_post_meta( get_the_ID(), 'Phone', true);
$newMeta = str_replace(array('۱'), '1', $getMeta);
update_post_meta(get_the_ID(), 'Phone', $newMeta);
}
}
这是结帐字段处理时间的一部分。如果我们可以在这里用 str_replace 来完成就可以了。
/* Process the checkout */
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
if ( $_POST['phone_sabet'] )
// do something
}
正确的钩子是woocommerce_checkout_update_order_meta
,所以你可以试试这个:
## Save the order meta with custom field value
add_action( 'woocommerce_checkout_update_order_meta', 'custom_update_order_meta' );
function custom_update_order_meta( $order_id ) {
if ( ! empty( $_POST['phone_sabet'] ) ) {
// Replace before saving translating )
$phone_sabet = str_replace( array('۱'), array('1'), $_POST['phone_sabet'] );
update_post_meta( $order_id, 'phone', sanitize_text_field( $phone_sabet ) );
}
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
已测试并有效
我需要替换自定义结帐字段中的一些字符。
这是我的自定义结帐字段的全部代码,(也许我们可以在这里使用 str_replace)
/* Add the field to the checkout */
add_action( 'woocommerce_after_checkout_billing_form', 'my_custom_checkout_field' );
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field">';
woocommerce_form_field( 'phone_sabet', array(
'type' => 'tel',
'required' => true,
'clear' => true,
'class' => array('my-field-class form-row-first'),
'label' => __(''),
'placeholder' => __(''),
'description' => '',
), $checkout->get_value(('phone_sabet')));
echo '</div>';
}
这是自定义字段更新时的代码部分
/* Update the order meta with field value */
add_action( 'woocommerce_checkout_update_order_meta','my_custom_checkout_field_update_order_meta' );
function my_custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST['phone_sabet'] ) ) {
update_post_meta( $order_id, 'Phone', sanitize_text_field( $_POST['phone_sabet'] ) );
}
}
我厌倦了使用 str_replace 并将其更改为以下但运气不好。
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );
function my_custom_checkout_field_update_order_meta( $order_id ) {
if ( ! empty( $_POST['phone_sabet'] ) ) {
update_post_meta( $order_id, 'Phone', sanitize_text_field( $_POST['phone_sabet'] ) );
$getMeta = get_post_meta( get_the_ID(), 'Phone', true);
$newMeta = str_replace(array('۱'), '1', $getMeta);
update_post_meta(get_the_ID(), 'Phone', $newMeta);
}
}
这是结帐字段处理时间的一部分。如果我们可以在这里用 str_replace 来完成就可以了。
/* Process the checkout */
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');
function my_custom_checkout_field_process() {
if ( $_POST['phone_sabet'] )
// do something
}
正确的钩子是woocommerce_checkout_update_order_meta
,所以你可以试试这个:
## Save the order meta with custom field value
add_action( 'woocommerce_checkout_update_order_meta', 'custom_update_order_meta' );
function custom_update_order_meta( $order_id ) {
if ( ! empty( $_POST['phone_sabet'] ) ) {
// Replace before saving translating )
$phone_sabet = str_replace( array('۱'), array('1'), $_POST['phone_sabet'] );
update_post_meta( $order_id, 'phone', sanitize_text_field( $phone_sabet ) );
}
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
已测试并有效