'CMB_Text_Field', 'text_small' => 'CMB_Text_Small_Field', 'text_url' => 'CMB_URL_Field', 'url' => 'CMB_URL_Field', 'radio' => 'CMB_Radio_Field', 'checkbox' => 'CMB_Checkbox', 'file' => 'CMB_File_Field', 'image' => 'CMB_Image_Field', 'wysiwyg' => 'CMB_wysiwyg', 'textarea' => 'CMB_Textarea_Field', 'textarea_code' => 'CMB_Textarea_Field_Code', 'select' => 'CMB_Select', 'taxonomy_select' => 'CMB_Taxonomy', 'post_select' => 'CMB_Post_Select', 'date' => 'CMB_Date_Field', 'date_unix' => 'CMB_Date_Timestamp_Field', 'datetime_unix' => 'CMB_Datetime_Timestamp_Field', 'time' => 'CMB_Time_Field', 'colorpicker' => 'CMB_Color_Picker', 'title' => 'CMB_Title', 'group' => 'CMB_Group_Field', ) ); } /** * Get a field class by type * * @param string $type * @return string $class, or false if not found. */ function _cmb_field_class_for_type( $type ) { $map = _cmb_available_fields(); if ( isset( $map[$type] ) ) return $map[$type]; return false; } /** * For the order of repeatable fields to be guaranteed, orderby meta_id needs to be set. * Note usermeta has a different meta_id column name. * * Only do this for older versions as meta is now ordered by ID (since 3.8) * See http://core.trac.wordpress.org/ticket/25511 * * @param string $query * @return string $query */ function cmb_fix_meta_query_order($query) { $pattern = '/^SELECT (post_id|user_id), meta_key, meta_value FROM \w* WHERE post_id IN \([\d|,]*\)$/'; if ( 0 === strpos( $query, "SELECT post_id, meta_key, meta_value" ) && preg_match( $pattern, $query, $matches ) ) { if ( isset( $matches[1] ) && 'user_id' == $matches[1] ) $meta_id_column = 'umeta_id'; else $meta_id_column = 'meta_id'; $meta_query_orderby = ' ORDER BY ' . $meta_id_column; if ( false === strpos( $query, $meta_query_orderby ) ) $query .= $meta_query_orderby; } return $query; } if ( version_compare( get_bloginfo( 'version' ), '3.8', '<' ) ) add_filter( 'query', 'cmb_fix_meta_query_order', 1 );