コード例 #1
0
 public function save_taxonomy($term_id)
 {
     if (wp_verify_nonce(cs_get_var('cs-taxonomy-nonce'), 'cs-taxonomy')) {
         $errors = array();
         $taxonomy = cs_get_var('taxonomy');
         foreach ($this->options as $request_value) {
             if ($taxonomy == $request_value['taxonomy']) {
                 $request_key = $request_value['id'];
                 $request = cs_get_var($request_key, array());
                 // ignore _nonce
                 if (isset($request['_nonce'])) {
                     unset($request['_nonce']);
                 }
                 if (isset($request_value['fields'])) {
                     foreach ($request_value['fields'] as $field) {
                         if (isset($field['type']) && isset($field['id'])) {
                             $field_value = cs_get_vars($request_key, $field['id']);
                             // sanitize options
                             if (isset($field['sanitize']) && $field['sanitize'] !== false) {
                                 $sanitize_type = $field['sanitize'];
                             } else {
                                 if (!isset($field['sanitize'])) {
                                     $sanitize_type = $field['type'];
                                 }
                             }
                             if (has_filter('cs_sanitize_' . $sanitize_type)) {
                                 $request[$field['id']] = apply_filters('cs_sanitize_' . $sanitize_type, $field_value, $field, $request_value['fields']);
                             }
                             // validate options
                             if (isset($field['validate']) && has_filter('cs_validate_' . $field['validate'])) {
                                 $validate = apply_filters('cs_validate_' . $field['validate'], $field_value, $field, $request_value['fields']);
                                 if (!empty($validate)) {
                                     $meta_value = get_term_meta($term_id, $request_key, true);
                                     $errors[$field['id']] = array('code' => $field['id'], 'message' => $validate, 'type' => 'error');
                                     $default_value = isset($field['default']) ? $field['default'] : '';
                                     $request[$field['id']] = isset($meta_value[$field['id']]) ? $meta_value[$field['id']] : $default_value;
                                 }
                             }
                         }
                     }
                 }
                 $request = apply_filters('cs_save_taxonomy', $request, $request_key, $term_id);
                 if (empty($request)) {
                     delete_term_meta($term_id, $request_key);
                 } else {
                     if (get_term_meta($term_id, $request_key, true)) {
                         update_term_meta($term_id, $request_key, $request);
                     } else {
                         add_term_meta($term_id, $request_key, $request);
                     }
                 }
             }
         }
         set_transient('cs-taxonomy-transient', $errors, 10);
     }
 }
コード例 #2
0
 public function save_post($post_id, $post)
 {
     if (wp_verify_nonce(cs_get_var('cs-framework-metabox-nonce'), 'cs-framework-metabox')) {
         $errors = array();
         $post_type = cs_get_var('post_type');
         foreach ($this->options as $request_value) {
             if (in_array($post_type, (array) $request_value['post_type'])) {
                 $request_key = $request_value['id'];
                 $request = cs_get_var($request_key, array());
                 // ignore _nonce
                 if (isset($request['_nonce'])) {
                     unset($request['_nonce']);
                 }
                 foreach ($request_value['sections'] as $key => $section) {
                     if (isset($section['fields'])) {
                         foreach ($section['fields'] as $field) {
                             if (isset($field['type']) && isset($field['id'])) {
                                 $field_value = cs_get_vars($request_key, $field['id']);
                                 // sanitize options
                                 if (isset($field['sanitize']) && $field['sanitize'] !== false) {
                                     $sanitize_type = $field['sanitize'];
                                 } else {
                                     if (!isset($field['sanitize'])) {
                                         $sanitize_type = $field['type'];
                                     }
                                 }
                                 if (has_filter('cs_sanitize_' . $sanitize_type)) {
                                     $request[$field['id']] = apply_filters('cs_sanitize_' . $sanitize_type, $field_value, $field, $section['fields']);
                                 }
                                 // validate options
                                 if (isset($field['validate']) && has_filter('cs_validate_' . $field['validate'])) {
                                     $validate = apply_filters('cs_validate_' . $field['validate'], $field_value, $field, $section['fields']);
                                     if (!empty($validate)) {
                                         $meta_value = get_post_meta($post_id, $request_key, true);
                                         $errors[$field['id']] = array('code' => $field['id'], 'message' => $validate, 'type' => 'error');
                                         $default_value = isset($field['default']) ? $field['default'] : '';
                                         $request[$field['id']] = isset($meta_value[$field['id']]) ? $meta_value[$field['id']] : $default_value;
                                     }
                                 }
                             }
                         }
                     }
                 }
                 $request = apply_filters('cs_save_post', $request, $request_key, $post);
                 if (empty($request)) {
                     delete_post_meta($post_id, $request_key);
                 } else {
                     if (get_post_meta($post_id, $request_key)) {
                         update_post_meta($post_id, $request_key, $request);
                     } else {
                         add_post_meta($post_id, $request_key, $request);
                     }
                 }
                 $transient['ids'][$request_key] = cs_get_vars('cs_section_id', $request_key);
                 $transient['errors'] = $errors;
             }
         }
         set_transient('cs-metabox-transient', $transient, 10);
     }
 }