Woocomemrce订单和注册文件为大写

时间:2016-05-11 作者:Olga

我必须转换所有注册字段(姓名、姓氏、电子邮件、州、地址…)改为大写。

我的意思是没有CSS转换,比如text-transform: uppercase; 但是在它们进入数据库之前,先在PHP中进行转换。(过滤器)

我找不到如何应用这个PHP函数stringstrtoupper ( string $string ).

我已创建筛选器

add_filter( \'woocommerce_checkout_fields\' , \'custom_override_checkout_fields\' );
带函数

function custom_override_checkout_fields( $fields ) {
     $fields = strtoupper($fields);
     return $fields;
}
但它不起作用。

1 个回复
SO网友:majick

首先添加以下代码(可能还有WC Test Payment Gateway)并执行测试订单,以获取订单流程中通过woocommerce_after_checkout_validation 过滤器:

add_action(\'woocommerce_after_checkout_validation\',\'custom_modify_order\',10,1);
function custom_modify_order($posted) {
    foreach ($posted as $key => $value) {$data .= $key.":".$value.PHP_EOL;}
    $fh = fopen(get_stylesheet_directory().\'/orderdebug.txt\',\'w\');
    fwrite($fh,$data); fclose($fh);
    return $posted;
}
然后,当通过检查确定要转换的关键帧时orderdebug.txt (在当前主题的根目录中输出),您可以删除前面的代码,并通过woocommerce_process_checkout_field_* 过滤器:

// add the desired keys to this array in the following format, eg.
$uppercasefields = array(\'billing_first_name\',\'billing_last_name\');

foreach ($uppercasefields as $fieldkey) {
    add_filter(\'woocommerce_process_checkout_field_\'.$fieldkey,\'custom_field_to_uppercase\');
}  
function custom_field_to_uppercase($value) {return strtoupper($value);}
(参见功能process_checkout 属于woocoomerce/includes/class-wc-checkout.php 如果要查看此筛选器的应用位置)

EDIT: 这里似乎列出了钥匙:

https://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/

因此,您可能可以跳过第一步,但这仍然是一次有价值的调试体验。:-)

相关推荐

Apply_Filters()对所需的参数进行切片

我正在尝试向WooCommerce订单中的每个退款行添加一个按钮(其功能超出了这个问题的范围,足以说明它需要退款id作为参数)。我发现这些行是在woocommerce\\includes\\admin\\meta Box\\views\\html订单退款中创建的。无法重写的php。然而,有一项行动:do_action( \'woocommerce_admin_order_item_values\', null, $refund, $refund->get_id() ); 这似乎非常适合我的