/** * Get a field definition foctory for given field domain. * * @param string $domain Valid field domain. * @return WPCF_Field_Definition_Factory Factory instance for given domain. * @throws InvalidArgumentException when the domain is invalid * @since 2.1 */ public static function get_factory_by_domain($domain) { switch ($domain) { case Types_Field_Utils::DOMAIN_POSTS: return WPCF_Field_Definition_Factory_Post::get_instance(); case Types_Field_Utils::DOMAIN_USERS: return WPCF_Field_Definition_Factory_User::get_instance(); case Types_Field_Utils::DOMAIN_TERMS: return WPCF_Field_Definition_Factory_Term::get_instance(); default: throw new InvalidArgumentException('Invalid field domain.'); } }
/** * @return WPCF_Field_Definition_Factory Field definition factory of the correct type. */ protected function get_field_definition_factory() { return WPCF_Field_Definition_Factory_Term::get_instance(); }
/** * Render single cell in a term listing table. * * Catch field columns by their name prefix and render field values with preview renderer. * * @param mixed $value "" * @param string $column_name * @param int $term_id * @link https://make.wordpress.org/docs/plugin-developer-handbook/10-plugin-components/custom-list-table-columns/ * @return string Rendered HTML with the table cell content. * @since 1.9.1 */ public function manage_term_listing_cell($value, $column_name, $term_id) { // Deal only with our custom columns. if ($this->is_term_field_column($column_name)) { try { $field_slug = substr($column_name, strlen(self::LISTING_COLUMN_PREFIX)); $field_definition = WPCF_Field_Definition_Factory_Term::get_instance()->load_field_definition($field_slug); $field = new WPCF_Field_Instance_Term($field_definition, $term_id); $renderer_args = array('maximum_item_count' => 5, 'maximum_item_length' => 30, 'maximum_total_length' => 100); $renderer = WPCF_Field_Renderer_Factory::get_instance()->create_preview_renderer($field, $renderer_args); $value = $renderer->render(); } catch (Exception $e) { // Do nothing when we're unable to load the field. } } return $value; }
/** * Create a term field instance. * * @param string $field_slug Slug of existing field definition. * @param int $term_id ID of the term where the field belongs. * * @return null|WPCF_Field_Instance Field instance or null if an error occurs. * @since 1.9 */ public static function create_term_field_instance($field_slug, $term_id) { try { return new WPCF_Field_Instance_Term(WPCF_Field_Definition_Factory_Term::get_instance()->load_field_definition($field_slug), $term_id); } catch (Exception $e) { return null; } }
/** * Prepare field definition data, depending on current field domain, for passing to JavaScript. * * @return array * @since 2.0 */ private function build_field_definitions() { $query_args = array('filter' => 'all', 'orderby' => 'name', 'order' => 'asc'); $definitions = array(); switch ($this->get_current_domain()) { case Types_Field_Utils::DOMAIN_POSTS: $definitions = WPCF_Field_Definition_Factory_Post::get_instance()->query_definitions($query_args); break; case Types_Field_Utils::DOMAIN_USERS: $definitions = WPCF_Field_Definition_Factory_User::get_instance()->query_definitions($query_args); break; case Types_Field_Utils::DOMAIN_TERMS: $definitions = WPCF_Field_Definition_Factory_Term::get_instance()->query_definitions($query_args); break; } $definition_data = array(); foreach ($definitions as $definition) { $definition_data[] = $definition->to_json(); } return $definition_data; }