Ejemplo n.º 1
0
 /**
  * そのフィールドのメタデータを取得
  * 
  * @param WP_Post|WP_User|object $object
  * @param array $field
  * @param bool $is_repeatable このフィールドが所属するグループが repeat かどうか
  * @return mixed $post_meta
  */
 protected static function get_value_by_field($object, $Field, $is_repeatable)
 {
     $field_name = $Field->get('name');
     if (!$field_name) {
         return;
     }
     $Meta = new Smart_Custom_Fields_Meta($object);
     // ループ内の複数値項目の場合
     $field_type = $Field->get_attribute('type');
     $repeat_multiple_data = self::get_repeat_multiple_data($object);
     if (is_array($repeat_multiple_data) && isset($repeat_multiple_data[$field_name])) {
         if ($Meta->is_saved_by_key($field_name) || !$Meta->is_use_default_when_not_saved()) {
             $_meta = $Meta->get($field_name);
         } else {
             $_meta = self::get_default_value($Field);
         }
         $start = 0;
         foreach ($repeat_multiple_data[$field_name] as $repeat_multiple_key => $repeat_multiple_value) {
             if ($repeat_multiple_value === 0) {
                 $value = array();
             } else {
                 $value = array_slice($_meta, $start, $repeat_multiple_value);
                 $start += $repeat_multiple_value;
             }
             if ($Meta->is_saved_by_key($field_name) || $Meta->is_use_default_when_not_saved()) {
                 $value = apply_filters(SCF_Config::PREFIX . 'validate-get-value', $value, $field_type);
             }
             $meta[$repeat_multiple_key] = $value;
         }
     } else {
         if ($Field->get_attribute('allow-multiple-data') || $is_repeatable) {
             if ($Meta->is_saved_by_key($field_name) || !$Meta->is_use_default_when_not_saved()) {
                 $meta = $Meta->get($field_name);
             } else {
                 $meta = self::get_default_value($Field);
             }
         } else {
             if ($Meta->is_saved_by_key($field_name) || !$Meta->is_use_default_when_not_saved()) {
                 $meta = $Meta->get($field_name, true);
             } else {
                 $meta = self::get_default_value($Field, true);
             }
         }
         if ($Meta->is_saved_by_key($field_name) || $Meta->is_use_default_when_not_saved()) {
             $meta = apply_filters(SCF_Config::PREFIX . 'validate-get-value', $meta, $field_type);
         }
     }
     return $meta;
 }
Ejemplo n.º 2
0
 /**
  * 非複数許可フィールドのメタデータを取得
  * 
  * @param int $id 投稿ID or ユーザーID
  * @param Smart_Custom_Fields_Field_Base $Field
  * @param int $index
  * @return string or null
  */
 public function get_single_data_field_value($object, $Field, $index)
 {
     $Meta = new Smart_Custom_Fields_Meta($object);
     $id = $Meta->get_id();
     $field_name = $Field->get('name');
     if (is_null($index)) {
         return SCF::get_default_value($Field, true);
     }
     if ($Meta->is_saved_by_key($field_name) || !$Meta->is_use_default_when_not_saved()) {
         $value = $Meta->get($field_name);
         if (isset($value[$index])) {
             return $value[$index];
         }
     }
     return SCF::get_default_value($Field, true);
 }