如何验证寄存器设置数组

时间:2013-03-07 作者:egdavid

我想知道如何使用register_setting() 回调函数。

下面是我想使用的代码的示例部分:

register_setting( \'wpPart_options\', \'wpPart_options\', array( &$this, \'wpPartValidate_settings\' ) );
$this 是一个对象数组。

以下是我的演讲内容wpPartValidate_settings(); 作用

public function wpPartValidate_settings( $input ) {

   $options = get_option( \'wpPart_options\' );
   if ( check_admin_referer( \'wpPart_nonce_field\', \'wpPart_nonce_verify_adm\' ) ) {
      return $input;
   }

}
$input 是一个数组,如何对验证函数的每个输入执行正确的验证?

例如,我想执行strlen() 检查文本字段:

if ( strlen( $input ) != 20 )
   add_settings_error( \'wpPart_options\', \'textField\', __( \'TextField incomplete.\', \'wpPart\' ) , \'error\' );

1 个回复
最合适的回答,由SO网友:montrealist 整理而成

就我个人而言,我也会这样做,因为这似乎是您可以检查用户输入并验证它的唯一点。

此外,大量借用中的代码示例this excellent article:

function wpPartValidate_settings( $input ) {
   if ( check_admin_referer( \'wpPart_nonce_field\', \'wpPart_nonce_verify_adm\' ) ) {

    // Create our array for storing the validated options
    $output = array();

    foreach( $input as $key => $value ) {

      // Check to see if the current option has a value. If so, process it.
      if( isset( $input[$key] ) ) {

        // Strip all HTML and PHP tags and properly handle quoted strings
        $output[$key] = strip_tags( stripslashes( $input[ $key ] ) );

      } // end if
    } // end foreach
  } // end if
  // Return the array processing any additional functions filtered by this action
  return apply_filters( \'wpPartValidate_settings\', $output, $input );
}
我最喜欢的部分是apply_filters 最后打电话。这就是最佳实践!

结束

相关推荐

Custom order for Mysql array

我有一页帖子,每篇帖子都有一个自定义字段“expired”,其中包含一个YYYY-MM-DD格式的日期,用于订购帖子。该日期用于一个脚本,该脚本告诉访问者优惠是否已过期或有效期是否超过X天。我的数组如下:$postid = get_the_ID(); $meta1 = get_post_meta($postid, \'shop\', true); $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;