/** * @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')); } }
/** * リビジョンデータを保存 * *_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); }
/** * 繰り返しに設定された複数許可フィールドデータの区切り識別用データを取得 * * @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')); } }