/**
  * @group delete_term
  */
 public function test_delete_term()
 {
     $taxonomy = 'category';
     $term_id = $this->factory->term->create(array('taxonomy' => $taxonomy));
     $term = get_term($term_id, 'category');
     $Meta = new Smart_Custom_Fields_Meta($term);
     if (!_get_meta_table($Meta->get_meta_type())) {
         $Meta->add('text', 'text');
         $this->Ajax->delete_term($term_id, '', $taxonomy, $term);
         $this->assertSame(array(), $Meta->get('text'));
     }
 }
示例#2
0
 /**
  * リビジョンデータを保存
  * *_post_meta はリビジョンIDのときに自動的に本物IDに変換して処理してしまうので、*_metadata を使うこと
  *
  * @param int $post_id リビジョンの投稿ID
  */
 public function wp_insert_post($post_id)
 {
     if (!isset($_POST[SCF_Config::NAME])) {
         return;
     }
     if (!wp_is_post_revision($post_id)) {
         return;
     }
     $settings = SCF::get_settings(get_post($post_id));
     if (!$settings) {
         return;
     }
     check_admin_referer(SCF_Config::NAME . '-fields', SCF_Config::PREFIX . 'fields-nonce');
     $Meta = new Smart_Custom_Fields_Meta(get_post($post_id));
     $Meta->save($_POST);
 }
 /**
  * 非複数許可フィールドのメタデータを取得
  * 
  * @param WP_Post|WP_User|object $object
  * @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);
     $field_name = $Field->get('name');
     if (is_null($index)) {
         return SCF::get_default_value($Field, true);
     }
     if ($Meta->is_saved()) {
         $value = $Meta->get($field_name);
         if (isset($value[$index])) {
             return $value[$index];
         }
         return '';
     }
     return SCF::get_default_value($Field, true);
 }
示例#4
0
 /**
  * 繰り返しに設定された複数許可フィールドデータの区切り識別用データを取得
  * 
  * @param WP_Post|WP_User|object $object
  * @return array
  */
 public static function get_repeat_multiple_data($object)
 {
     $repeat_multiple_data = array();
     if (self::get_repeat_multiple_data_cache($object)) {
         return self::get_repeat_multiple_data_cache($object);
     }
     $Meta = new Smart_Custom_Fields_Meta($object);
     $_repeat_multiple_data = $Meta->get(SCF_Config::PREFIX . 'repeat-multiple-data', true);
     if (!empty($_repeat_multiple_data)) {
         $repeat_multiple_data = $_repeat_multiple_data;
     }
     self::save_repeat_multiple_data_cache($object, $repeat_multiple_data);
     return $repeat_multiple_data;
 }
 /**
  * @group get_term_meta
  */
 public function test_get_term_meta_all()
 {
     $Meta = new Smart_Custom_Fields_Meta(get_term($this->term_id, 'category'));
     $Meta->update('text', 'hoge');
     $Meta->add('checkbox', 1);
     $Meta->add('checkbox', 2);
     // ループ内のチェックボックス(複数値項目)は必ずこのメタデータを持つ
     $Meta->add(SCF_Config::PREFIX . 'repeat-multiple-data', array('checkbox3' => array(1, 2)));
     $Meta->add('checkbox3', 1);
     $Meta->add('checkbox3', 2);
     $Meta->add('checkbox3', 3);
     $this->assertEquals(array('text' => 'hoge', 'checkbox' => array(1, 2), 'group-name-3' => array(array('text3' => '', 'checkbox3' => array(1)), array('text3' => '', 'checkbox3' => array(2, 3))), 'text-has-default' => '', 'text-has-not-default' => '', 'checkbox-has-default' => array(), 'checkbox-has-not-default' => array()), SCF::get_term_meta($this->term_id, 'category'));
 }
 /**
  * タームのメタ情報を削除
  *
  * @param int $term_id
  * @param int $term_taxonomy_id
  * @param string $taxonomy
  * @param object $deleted_term
  */
 public function delete_term($term_id, $term_taxonomy_id, $taxonomy, $deleted_term)
 {
     $Meta = new Smart_Custom_Fields_Meta($deleted_term);
     $Meta->delete_term_meta_for_wp43();
 }
 /**
  * @group get_single_data_field_value
  */
 public function test_get_single_data_field_value__保存済の場合は文字列を返す()
 {
     $object = get_post($this->post_id);
     $Field = SCF::get_field($object, 'text-has-default');
     $index = 0;
     $Meta = new Smart_Custom_Fields_Meta($object);
     $Meta->add('text-has-default', 'A');
     $this->assertEquals('A', $this->Controller->get_single_data_field_value($object, $Field, $index));
 }
 /**
  * @group get_type
  */
 public function test_get_type__objectが存在しないタームのときはnullを返す()
 {
     $object = get_term(99999, 'category');
     $Meta = new Smart_Custom_Fields_Meta($object);
     $type = $Meta->get_type();
     $this->assertNull($type);
 }
 /**
  * カスタムフィールド表示 table で使用する各 tr を出力
  * 
  * @param WP_Post|WP_User $object
  * @param bool $is_repeat
  * @param array $fields
  * @param int, null $index
  */
 protected function display_tr($object, $is_repeat, $fields, $index = null)
 {
     $Meta = new Smart_Custom_Fields_Meta($object);
     $id = $Meta->get_id();
     $btn_repeat = '';
     if ($is_repeat) {
         $btn_repeat = sprintf('<span class="%s"></span>', esc_attr(SCF_Config::PREFIX . 'icon-handle dashicons dashicons-menu'));
         $btn_repeat .= '<span class="btn-add-repeat-group dashicons dashicons-plus-alt ' . SCF_Config::PREFIX . 'repeat-btn"></span>';
         $btn_repeat .= ' <span class="btn-remove-repeat-group dashicons dashicons-dismiss ' . SCF_Config::PREFIX . 'repeat-btn"></span>';
     }
     $style = '';
     if (is_null($index)) {
         $style = 'style="display: none;"';
     }
     printf('<div class="%s" %s>%s<table>', esc_attr(SCF_Config::PREFIX . 'meta-box-table'), $style, $btn_repeat);
     foreach ($fields as $Field) {
         $display_name = $Field->get_attribute('display-name');
         $field_name = $Field->get('name');
         $field_label = $Field->get('label');
         if (!$field_label) {
             $field_label = $field_name;
         }
         // 複数値許可フィールドのとき
         if ($Field->get_attribute('allow-multiple-data')) {
             $value = $this->get_multiple_data_field_value($object, $Field, $index);
         } else {
             $value = $this->get_single_data_field_value($object, $Field, $index);
         }
         $notes = $Field->get('notes');
         if (!empty($notes)) {
             $notes = sprintf('<p class="description">%s</p>', esc_html($notes));
         }
         $form_field = $Field->get_field($index, $value);
         printf('<tr><th>%s</th><td>%s%s</td></tr>', esc_html($field_label), $form_field, $notes);
     }
     echo '</table></div>';
 }
 /**
  * A wrapper of Smart_Custom_Fields_Meta()->save()
  *
  * @param (array) $data
  */
 protected function scfSave($data)
 {
     $post = $this->getPost();
     if ($post instanceof WP_Post) {
         if (class_exists('Smart_Custom_Fields_Meta') && is_array($data)) {
             $_data = array();
             $_data['smart-custom-fields'] = $data;
             $meta = new Smart_Custom_Fields_Meta($post);
             $meta->save($_data);
         } elseif (is_array($data)) {
             foreach ($data as $key => $array) {
                 foreach ((array) $array as $value) {
                     $this->updateMeta($key, $value);
                 }
             }
         }
     } else {
         $this->addError('post_is_not_set', __('WP_Post object is not set.', 'really-simple-csv-importer'));
     }
 }