name ) ) { return false; } self::$instances[ $field_type->name ] = $field_type; return true; } /** * Get a registered field type instance. * * @param string $name * @return MetaForge_Field_Type|null */ public static function get_field_type( $name ) { if ( empty( self::$instances ) ) { self::register_core_field_types(); } return self::$instances[ $name ] ?? null; } /** * Get all registered field type instances. * * @return MetaForge_Field_Type[] */ public static function get_all() { if ( empty( self::$instances ) ) { self::register_core_field_types(); } return self::$instances; } /** * Register default core field types (20 Free Fields) and trigger Pro fields hook. */ public static function register_core_field_types() { // 20 Core (Free) Field Types self::register_field_type( new MetaForge_TextField() ); self::register_field_type( new MetaForge_TextareaField() ); self::register_field_type( new MetaForge_NumberField() ); self::register_field_type( new MetaForge_SelectField() ); self::register_field_type( new MetaForge_CheckboxField() ); self::register_field_type( new MetaForge_RadioField() ); self::register_field_type( new MetaForge_TrueFalseField() ); self::register_field_type( new MetaForge_RangeField() ); self::register_field_type( new MetaForge_ButtonField() ); self::register_field_type( new MetaForge_ImageField() ); self::register_field_type( new MetaForge_FileField() ); self::register_field_type( new MetaForge_WysiwygField() ); self::register_field_type( new MetaForge_ColorPickerField() ); self::register_field_type( new MetaForge_DateTimeField() ); self::register_field_type( new MetaForge_LinkField() ); self::register_field_type( new MetaForge_PostTypeSelectorField() ); self::register_field_type( new MetaForge_TaxonomyField() ); self::register_field_type( new MetaForge_UserField() ); self::register_field_type( new MetaForge_GroupField() ); self::register_field_type( new MetaForge_TabField() ); // Trigger action for MetaForge Pro to register the 8 Pro Field Types do_action( 'metaforge_register_pro_field_types' ); } }