Beispiel #1
0
 function handle($user_id)
 {
     if (!isset($_POST[$this->nonce]) || !wp_verify_nonce($_POST[$this->nonce], $this->nonce_action)) {
         return $user_id;
     }
     $fields = $this->fields();
     if (empty($fields)) {
         return;
     }
     foreach (dp_field_options($fields) as $name => $field) {
         $meta_value = get_user_meta($user_id, $name, true);
         $new_meta_value = $_POST[$name];
         if (is_array($new_meta_value)) {
             $new_meta_value = array_filter($new_meta_value);
         } elseif ($field['type'] == 'password') {
             $new_meta_value = md5($new_meta_vlue);
         }
         if ($new_meta_value && empty($meta_value)) {
             add_user_meta($user_id, $name, $new_meta_value, true);
         } elseif ($new_meta_value && $new_meta_value != $meta_value) {
             update_user_meta($user_id, $name, $new_meta_value);
         } elseif (empty($new_meta_value) && $meta_value) {
             delete_user_meta($user_id, $name, $meta_value);
         }
     }
 }
Beispiel #2
0
function dp_field_options($fields = array())
{
    $options = array();
    foreach ($fields as $field) {
        global $post;
        if (!empty($field['fields']) && $field['type'] == 'fields') {
            $options = array_merge_recursive($options, dp_field_options($field['fields']));
        } else {
            if (empty($field['name'])) {
                continue;
            }
            $name = $field['name'];
            $name = str_replace('[]', '', $name);
            $name = str_replace(']', '', $name);
            $name = explode('[', $name);
            $option = array();
            for ($i = count($name) - 1; $i >= 0; $i--) {
                if ($i == count($name) - 1) {
                    $option[$name[$i]] = isset($field['value']) ? $field['value'] : '';
                } else {
                    $option[$name[$i]] = $option;
                    // $option[$name[$i]] = array( $name[$i+1] => $option[$name[$i+1]] );
                    unset($option[$name[$i + 1]]);
                }
            }
            $options = array_merge_recursive($options, $option);
        }
    }
    return $options;
}