moogatw / wp-metabox
Adding custom field for WordPress Post Type.
Requires
- php: >=7.2
This package is auto-updated.
Last update: 2025-07-19 17:15:08 UTC
README
Simple WordPress Class for metabox forks from oberonlai/wp-metabox
Requirements
Installation
Install with composer
Run the following in your terminal to install with Composer.
$ composer require moogatw/wp-metabox
WP Metabox PSR-4 autoloading and can be used with the Composer's autoloader. Below is a basic example of getting started, though your setup may be different depending on how you are using Composer.
require __DIR__ . '/vendor/autoload.php'; use MGD\Metabox; $options = array( ... ); $books = new Metabox( $options );
See Composer's basic usage guide for details on working with Composer and autoloading.
Basic Usage
Below is a basic example of setting up a simple custom filter with a post meta field.
// Require the Composer autoloader. require __DIR__ . '/vendor/autoload.php'; // Import PostTypes. use MGD\Metabox; ## Usage To create a metabox, first instantiate an instance of `Metabox`. The class takes one argument, which is an associative array. The keys to the array are similar to the arguments provided to the [add_meta_box](https://developer.wordpress.org/reference/functions/add_meta_box/) WordPress function; however, you don't provide `callback` or `callback_args`. ```php $metabox = new Metabox(array( 'id' => 'metabox_id', 'title' => 'My awesome metabox', 'screen' => 'post', // post type 'context' => 'advanced', // Options normal, side, advanced. 'priority' => 'default' ));
Available Fields
After instantiating the above metabox, add a few fields to it. Below is a list of the available fields.
Text
A simple text input. Nothing special.
$metabox->addText(array( 'id' => 'metabox_text_field', 'label' => 'Text', 'desc' => 'An example description paragraph that appears below the label.' ));
Textarea
Textareas are used to store a body of text. For a richer experience with HTML, see the WYSIWYG editor.
$metabox->addTextArea(array( 'id' => 'metabox_textarea_field', 'label' => 'Textarea', 'desc' => 'An example description paragraph that appears below the label.' ));
Checkbox
Checkboxes are a great way to facilitate conditional logic.
$metabox->addCheckbox(array( 'id' => 'metabox_checkbox_field', 'label' => 'Checkbox', 'desc' => 'An example description paragraph that appears below the label.' ));
Radio
Radio fields are a great way to choose from a selection of options.
$metabox->addRadio( array( 'id' => 'metabox_radio_field', 'label' => 'Radio', 'desc' => 'An example description paragraph that appears below the label.', ), array( 'key1' => 'Value One', 'key2' => 'Value Two' ) );
Select
Select fields are a great way to choose from a selection of options.
$metabox->addSelect( array( 'id' => 'metabox_select_field', 'label' => 'Select', 'desc' => 'An example description paragraph that appears below the label.', ), array( 'key1' => 'Value One', 'key2' => 'Value Two' ) );
Image Upload
Use this to permit users to upload an image within the metabox. Pro tip: use this with the repeater to dynamically manage the photos within a gallery or slideshow.
$metabox->addImage(array( 'id' => 'metabox_image_field', 'label' => 'Image Upload', 'desc' => 'An example description paragraph that appears below the label.' ));
WYSIWYG Editor
You can use a WYSIWYG editor to facilitate the management of HTML content.
$metabox->addEditor(array( 'id' => 'metabox_editor_field', 'label' => 'Editor', 'desc' => 'An example description paragraph that appears below the label.' ));
Number
The number fields are limited to enter the number.
$metabox->addNumber(array( 'id' => 'metabox_number_field', 'label' => 'Number', 'desc' => 'An example description paragraph that appears below the label.' ));
Color
The color fields are to select the color code.
$metabox->addColor(array( 'id' => 'metabox_color_field', 'label' => 'Color', 'desc' => 'An example description paragraph that appears below the label.' ));
Grid System
The newly added grid system is used for the field width, using col-1 to 12, and the default is col-12.
$metabox->addText(array( 'id' => 'metabox_text_field', 'label' => 'Text', 'desc' => 'An example description paragraph that appears below the label.' 'col' => '6', )); $metabox->addRadio( array( 'id' => 'metabox_radio_field', 'label' => 'Radio', 'desc' => 'An example description paragraph that appears below the label.', 'col' => '3', ), array( 'key1' => 'Value One', 'key2' => 'Value Two' ) );
Repeater
All of the above fields can be added to a repeater to store an array of content with a dynamic length. Here is an example of a repeater block with three fields: text, textarea, and image upload.
Notice: true
is a second argument to the repeater fields. This is required. Also, the variable, $metabox_repeater_block_fields[]
, which stores the repeater block's fields, has a pair of brackets []
at the end of the variable name. This is required.
$metabox_repeater_block_fields[] = $metabox->addText(array( 'id' => 'metabox_repeater_text_field', 'label' => 'Photo Title' ), true); $metabox_repeater_block_fields[] = $metabox->addTextArea(array( 'id' => 'metabox_repeater_textarea_field', 'label' => 'Photo Description' ), true); $metabox_repeater_block_fields[] = $metabox->addImage(array( 'id' => 'metabox_repeater_image_field', 'label' => 'Upload Photo' ), true); $metabox->addRepeaterBlock(array( 'id' => 'metabox_repeater_block', 'label' => 'Photo Gallery', 'fields' => $metabox_repeater_block_fields, 'desc' => 'Photos in a photo gallery.', 'single_label' => 'Photo' ));