WP Manifestindependent plugin directory
manifest / developer / mdc-meta-box

MDC Meta Box Example

A PHP class to create custom meta boxes for WordPress' posts, pages or custom post types.

★ 24stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/mukto90/mdc-meta-box/archive/refs/heads/master.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

A PHP class to create custom meta boxes for WordPress' posts, pages, or custom post types.

Usage

How to use

How to add metabox(es)

Option 1 (using Composer)

  • 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

    Option 2

  • 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

Option 3

  • Simply download the zip and use it as a standalone plugin.
  • Edit mdc-meta-box/plugin.php under your wp-content/plugins directory.

How to get custom fields' values

  • Use get_post_meta( $post_id, 'your_field_name', true ) to get the field value.

Basic Example

// 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 );
}

Full Working Example

// 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'   =>  'john@doe.com',
                '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 );
}

Screenshot

MDC Meta Box

Requirement (minimum)

  • PHP 5.3.0
  • WordPress 3.0+

Author

Nazmul Ahsan

Discussion

Link