/**
  * 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.');
     }
 }
示例#2
0
 /**
  * @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;
 }
示例#4
0
 /**
  * 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;
 }