Php 使用WooCommerce设置API,如何筛选或向设置值添加错误?
提供的信息刚好足以将设置添加到网关/装运方法屏幕 但是,与本机WordPress设置API不同,没有文档化的“清理”回调,就像WordPress的“Php 使用WooCommerce设置API,如何筛选或向设置值添加错误?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,提供的信息刚好足以将设置添加到网关/装运方法屏幕 但是,与本机WordPress设置API不同,没有文档化的“清理”回调,就像WordPress的“register\u setting()所做的那样。因此,如果提供了无效内容,我不确定应该在哪里使用add\u settings\u error或类似功能 我该怎么做?我忽略了哪些文档 不确定它在哪里被记录(如果有的话),但我在代码中找到了答案: woocommerce/classes/abstracts/abstract wc settings a
register\u setting()
所做的那样。因此,如果提供了无效内容,我不确定应该在哪里使用add\u settings\u error
或类似功能
我该怎么做?我忽略了哪些文档 不确定它在哪里被记录(如果有的话),但我在代码中找到了答案:
woocommerce/classes/abstracts/abstract wc settings api.php
~651(2.0ish版本)包含以下代码:
// Look for a validate_FIELDID_field method for special handling
if ( method_exists( $this, 'validate_' . $k . '_field' ) ) {
$field = $this->{'validate_' . $k . '_field'}( $k );
$this->sanitized_fields[ $k ] = $field;
这意味着如果您添加了如下设置:
'username' => array(
'title' => __( 'Username', 'woocommerce' ),
'type' => 'text',
'description' => __( 'Please enter your Payment Gateway Username; this is required for taking payments!', 'woocommerce' ),
'default' => ''
),
然后,您需要在相同的支付网关类上添加一个名为validate\u username\u field
的方法,该方法接受一个参数(设置值;在本例中为username),并返回经过清理的值和/或创建错误
例如:
public function validate_username_field($value)
{
if (...)
{
// Valid username!
return $value;
} else {
// Invalid?
add_settings_error(...);
}
}
或者类似的东西 虽然add_settings_error()不显示任何内容,但我还是完成了这个技巧。WP是4.7.5,WC是3.0.7,有什么想法吗?