Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用WooCommerce设置API,如何筛选或向设置值添加错误?_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 使用WooCommerce设置API,如何筛选或向设置值添加错误?

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

提供的信息刚好足以将设置添加到网关/装运方法屏幕

但是,与本机WordPress设置API不同,没有文档化的“清理”回调,就像WordPress的“
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,有什么想法吗?