Contributors: webdevstudios, jtsternberg, gregrickaby, tw2113, patrickgarman
Donate link: http://webdevstudios.com
Tags: metaboxes, forms, fields, options, settings
Requires at least: 3.8.0
Tested up to: 4.2.1
Stable tag: 2.0.6
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Complete contributors list found here: github.com/WebDevStudios/CMB2/graphs/contributors
CMB2 is a metabox, custom fields, and forms library for WordPress that will blow your mind.
Plugin available on wordpress.org
CMB2 is a complete rewrite of Custom Metaboxes and Fields for WordPress. To get started, please follow the examples in the included example-functions.php
file and have a look at the basic usage instructions.
You can see a list of available field types here.
- Create metaboxes to be used on post edit screens.
- Create forms to be used on an options pages.
- Create forms to handle user meta and display them on user profile add/edit pages.
- Flexible API that allows you to use CMB forms almost anywhere, even on the front-end.
- Several field types are included.
- Custom API hook that allows you to create your own field types.
- There are numerous hooks and filters, allowing you to modify many aspects of the library (without editing it directly).
- Repeatable fields for most field types are supported, as well as repeatable field groups.
- CMB2 is safe to bundle with any project. It will only load the newest version in the system.
- Thanks to many in the CMB2 community and to our friends at wp-translations.org, we have a good start on several translations for CMB2. Please feel free to work with wp-translations.org to provide even more!
-
CMB2 Field Type: CMB Attached Posts Field from coreymcollins:
custom_attached_posts
, for attaching posts to a page. -
CMB2 Field Type: CMB2 Post Search field:
post_search_text
adds a post-search dialog for searching/attaching other post IDs. -
CMB2 Field Type: CMB2 RGBa Colorpicker from JayWood:
rgba_colorpicker
adds a color picker that supports RGBa, (RGB with transparency (alpha) value). -
CMB2 Field Type: Google Maps from mustardBees: Custom field type for Google Maps.
The
pw_map
field stores the latitude/longitude values which you can then use to display a map in your theme. -
CMB2 Field Type: Select2 from mustardBees: Custom field types which use the Select2 script:
- The
pw_select field
acts much like the default select field. However, it adds typeahead-style search allowing you to quickly make a selection from a large list - The
pw_multiselect
field allows you to select multiple values with typeahead-style search. The values can be dragged and dropped to reorder
- The
-
CMB2 Field Type: Gallery from mustardBees: Adds a WordPress gallery field.
-
CMB Field Type: Slider from mattkrupnik: Adds a jQuery UI Slider field.
- Taxonomy_MetaData: WordPress Helper Class for saving pseudo-metadata for taxonomy terms. Includes an extended class for using CMB to generate the actual form fields.
- CMB2 Taxonomy from jcchavezs: Similar to Taxonomy_MetaData, but uses a custom table for taxonomy term meta storage.
- WordPress Shortcode Button: Uses CMB2 fields to generate fields for shortcode input modals.
All contributions welcome. If you would like to submit a pull request, please check out the trunk branch and pull request against it. Please read the CONTRIBUTING doc for more details.
A complete list of all our awesome contributors found here: github.com/WebDevStudios/CMB2/graphs/contributors
If installing the plugin from wordpress.org:
- Upload the entire
/CMB2
directory to the/wp-content/plugins/
directory. - Activate CMB2 through the 'Plugins' menu in WordPress.
- Copy (and rename if desired)
example-functions.php
into to your theme or plugin's directory. - Edit to only include the fields you need and rename the functions.
- Profit.
If including the library in your plugin or theme:
- Place the CMB2 directory inside of your theme or plugin.
- Copy (and rename if desired)
example-functions.php
into a folder above the CMB2 directory OR copy the entirety of its contents to your theme'sfunctions.php
file. - Edit to only include the fields you need and rename the functions (CMB2 directory should be left unedited in order to easily update the library).
- Profit.
- New metabox/form parameter,
show_on_cb
, allows you to conditionally display a cmb metabox/form via a callback. The$cmb
object gets passed as a parameter to the callback. This complements the'show_on_cb'
parameter that already exists for individual fields. Using this callback is similar to using the'cmb2_show_on'
filter, but only applies to that specific metabox and it is recommended to use this callback instead as it minimizes th risk that your filter will affect other metaboxes. - Taxonomy types no longer save a value. The value getting saved was causing confusion and is not meant to be used. To use the saved taxonomy data, you need to use the WordPress term api,
get_the_terms
,get_the_term_list
, etc. - Add
'multiple'
field parameter to store values in individual rows instead of serialized array. Will only work if field is not repeatable or a repeatable group. Props JohnyGoerend. (#262, #206, #45). - Portuguese (Brazil) translation provided by @lucascdsilva - #293.
- Spanish (Spain) translation updated by @yivi - #272.
- Added group field callback parameters,
'before_group'
,'before_group_row'
,'after_group_row'
,'after_group'
to complement the'before_row'
,'before'
,'after'
,'after_row'
field parameters. - Better styling for
title
fields andtitle
descriptions on options pages. - Add a
sanitization_cb
field parameter check for thegroup
field type. - Better function/file doc-blocks to provide better documentation for automated documentation tools. See: cmb2.io/api.
cmb2_print_metabox_form
,cmb2_metabox_form
, andcmb2_get_metabox_form
helper functions now accept two new parameters:- an
'object_type'
parameter to explictly set that in the$cmb
object. - an
'enqueue_js'
parameter to explicitly disable the CMB JS enqueue. This is handy if you're not planning on using any of the fields which require JS (like color/date pickers, wysiwyg, file, etc).
- an
- Fix issue with oembed fields in repeatable groups where changing video changed it for all fields in a group.
- Fix empty arrays (like in the group field) saving as a value.
- Move
'cmb2_override_meta_value'
and"cmb2_override_{$field_id}_meta_value"
filters to theCMB2_Field::get_data()
method so that the filters are applied every time the data is requested. THIS IS A BREAKING CHANGE: The parameters for those filters have changed a bit. Previously, the filters accepted 5 arguments,$value
,$object_id
,$field_args
,$object_type
,$field
. They have changed to accept 4 arguments instead,$value
,$object_id
,$args
,$field
, where$args
is an array that contains the following:- @type string $type The current object type
- @type int $id The current object ID
- @type string $field_id The ID of the field being requested
- @type bool $repeat Whether current field is repeatable
- @type bool $single Whether current field is a single database row
- The CMB2 url (for css/js resources) does not define properly in all WAMP/XAMP (Windows) environments.
- Metabox containing WYSIWYG editor cannot be moved or used in a repeatable way at this time (this is a TinyMCE issue).
- Not all fields work well in a repeatable group.