A PHP class to create custom meta boxes for WordPress' posts, pages, or custom post types.
- Add the following to your
composer.json
file-
{
"require": {
"mukto90/mdc-meta-box": "dev-master"
}
}
- Run the
composer install
command. - Include your autoloader file (if not already) with
/vendor/autoload.php;
- Instantiate the class and pass your arguments like this-
$first_meta_field = new MDC_Meta_Box( $args ); // see below for sample $args
- Include
class.mdc-meta-box.php
in your theme or plugin. - Define meta box(es) and fields in your theme's
functions.php
file or in your plugin, like this-
$second_meta_field = new MDC_Meta_Box( $args ); // see below for sample $args
- Simply download the zip and use it as a standalone plugin.
- Edit
mdc-meta-box/plugin.php
under yourwp-content/plugins
directory.
- Use
get_post_meta( $post_id, 'your_field_name', true )
to get the field value.
// include library file
// require dirname( __FILE__ ) . '/src/class.mdc-meta-box.php'; // un-comment this if needed
add_action( 'admin_init', 'my_meta_fields' );
function my_meta_fields() {
$args = array(
'meta_box_id' => 'your_unique_meta_box_id_here',
'label' => __( 'Meta Box Title Here' ),
'post_type' => array( 'post', 'page', 'cpt1', 'cpt2' ),
'context' => 'context_of_meta_box', // side|normal|advanced
'priority' => 'priority_of_meta_box', // high|low
'hook_priority' => 'priority_of_hook', // Default 10
'fields' => array(
/* adds a field */
array(
'name' => 'sample_field_name',
'label' => __( 'Field Title' ),
'type' => 'field_type_here', // define a field type from text, number, textarea, file, radio etc. see 'Full Working Example' for better understanding
),
/* adds another field */
array(
'name' => 'another_sample_field_name',
'label' => __( 'Another Field Title' ),
'type' => 'field_type_here',
),
)
);
mdc_meta_box( $args );
}
// include library file
// require dirname( __FILE__ ) . '/src/class.mdc-meta-box.php'; // un-comment this if needed
add_action( 'admin_init', 'my_meta_fields' );
function my_meta_fields() {
$args = array(
'meta_box_id' => 'sample_meta_id',
'label' => __( 'Sample Meta Box' ),
'post_type' => array( 'post', 'page' ),
'context' => 'normal', // side|normal|advanced
'priority' => 'high', // high|low
'hook_priority' => 10,
'fields' => array(
/**
* PLEASE NOTE
* desc, desc_nop, class, default, readonly, disabled, cols, rows, text_mode, teeny and media_buttons are optional.
*/
array(
'name' => 'sample_text',
'label' => __( 'Text Field' ),
'type' => 'text',
'desc' => __( 'This is a text field.' ),
'class' => 'mdc-meta-field',
'default' => 'Hello World!',
'readonly' => false, // true|false
'disabled' => false, // true|false
'desc_nop' => false, // true|false
),
array(
'name' => 'sample_number',
'label' => __( 'Number Field' ),
'type' => 'number',
'desc' => __( 'This is a number field.' ),
'class' => 'mdc-meta-field',
'default' => 10,
'readonly' => false, // true|false
'disabled' => false, // true|false
),
array(
'name' => 'sample_email',
'label' => __( 'Email Field' ),
'type' => 'email',
'desc' => __( 'This is an email field.' ),
'class' => 'mdc-meta-field',
'default' => '[email protected]',
'readonly' => false, // true|false
'disabled' => false, // true|false
),
array(
'name' => 'sample_url',
'label' => __( 'URL Field' ),
'type' => 'url',
'desc' => __( 'This is a url field.' ),
'class' => 'mdc-meta-field',
'default' => 'http://johndoe.com',
'readonly' => false, // true|false
'disabled' => false, // true|false
),
array(
'name' => 'sample_password',
'label' => __( 'Password Field' ),
'type' => 'password',
'desc' => __( 'This is a password field.' ),
'class' => 'mdc-meta-field',
'readonly' => false, // true|false
'disabled' => false, // true|false
),
array(
'name' => 'sample_textarea',
'label' => __( 'Textarea Field' ),
'type' => 'textarea',
'desc' => __( 'This is a textarea field.' ),
'class' => 'mdc-meta-field',
'columns' => 24,
'rows' => 5,
'default' => 'lorem ipsum dolor sit amet',
'readonly' => false, // true|false
'disabled' => false, // true|false
),
array(
'name' => 'sample_radio',
'label' => __( 'Radio Field' ),
'type' => 'radio',
'desc' => __( 'This is a radio field.' ),
'class' => 'mdc-meta-field',
'options' => array(
'item_1' => 'Item One',
'item_2' => 'Item Two',
'item_3' => 'Item Three',
),
'default' => 'item_2',
'disabled' => false, // true|false
),
array(
'name' => 'sample_select',
'label' => __( 'Select Field' ),
'type' => 'select',
'desc' => __( 'This is a select field.' ),
'class' => 'mdc-meta-field',
'options' => array(
'option_1' => 'Option One',
'option_2' => 'Option Two',
'option_3' => 'Option Three',
),
'default' => 'option_2',
'disabled' => false, // true|false
'multiple' => true, // true|false
),
array(
'name' => 'sample_checkbox',
'label' => __( 'Checkbox Field' ),
'type' => 'checkbox',
'desc' => __( 'This is a checkbox field.' ),
'class' => 'mdc-meta-field',
'disabled' => false, // true|false
),
array(
'name' => 'sample_color',
'label' => __( 'Color Field' ),
'type' => 'color',
'desc' => __( 'This is a color field.' ),
'class' => 'mdc-meta-field',
'default' => '#f00'
),
array(
'name' => 'sample_wysiwyg',
'label' => __( 'WYSIWYG Field' ),
'type' => 'wysiwyg',
'desc' => __( 'This is a wysiwyg field.' ),
'class' => 'mdc-meta-field',
'width' => '100%',
'rows' => 5,
'teeny' => true,
'text_mode' => false, // true|false
'media_buttons' => false, // true|false
'default' => 'Hello World'
),
array(
'name' => 'sample_fise',
'label' => __( 'File Field' ),
'type' => 'file',
'upload_button' => __( 'Choose File' ),
'select_button' => __( 'Select File' ),
'desc' => __( 'This is a file field.' ),
'class' => 'mdc-meta-field',
'disabled' => false, // true|false
'default' => 'http://example.com/sample/file.txt'
),
)
);
mdc_meta_box( $args );
}
- PHP 5.3.0
- WordPress 3.0