Last active
August 7, 2024 04:28
-
-
Save Crocoblock/5ce2bc0ad8e0db7b6ce7b26ddc27e9bd to your computer and use it in GitHub Desktop.
JetEngine Register meta box for CPT/taxonomy/user programmatically
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| add_action( 'jet-engine/meta-boxes/register-instances', function( $meta ) { | |
| //all field types are given for the reference, you can add any amount of fields of any type | |
| $meta_fields = array ( | |
| array ( | |
| 'title' => 'reference-text', | |
| 'name' => 'reference-text', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' =>array (), | |
| 'type' => 'text', | |
| 'description' => 'description', | |
| 'max_length' => '123', | |
| 'default_val' => '1', | |
| 'quick_editable' => true, | |
| ), | |
| array ( | |
| 'title' => 'reference-textarea', | |
| 'name' => 'reference-textarea', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'textarea', | |
| ), | |
| array ( | |
| 'title' => 'reference-wysiwyg', | |
| 'name' => 'reference-wysiwyg', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'wysiwyg', | |
| ), | |
| array ( | |
| 'title' => 'reference-date', | |
| 'name' => 'reference-date', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'date', | |
| ), | |
| array ( | |
| 'title' => 'reference-date-timestamp', | |
| 'name' => 'reference-date-timestamp', | |
| 'object_type' => 'field', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'date', | |
| 'width' => '100%', | |
| 'is_timestamp' => true, | |
| ), | |
| array ( | |
| 'title' => 'reference-time', | |
| 'name' => 'reference-time', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'time', | |
| ), | |
| array ( | |
| 'title' => 'reference-datetime', | |
| 'name' => 'reference-datetime', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'datetime-local', | |
| ), | |
| array ( | |
| 'title' => 'reference-datetime-timestamp', | |
| 'name' => 'reference-datetime-timestamp', | |
| 'object_type' => 'field', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'datetime-local', | |
| 'width' => '100%', | |
| 'is_timestamp' => true, | |
| ), | |
| array ( | |
| 'title' => 'reference-switcher', | |
| 'name' => 'reference-switcher', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'switcher', | |
| ), | |
| array ( | |
| 'title' => 'reference-checkbox', | |
| 'name' => 'reference-checkbox', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| array ( | |
| 'key' => '1', | |
| 'value' => 'One', | |
| ), | |
| array ( | |
| 'key' => '2', | |
| 'value' => 'Two', | |
| ), | |
| ), | |
| 'type' => 'checkbox', | |
| 'check_radio_layout' => 'horizontal', | |
| ), | |
| array ( | |
| 'title' => 'reference-checkbox-plain-array', | |
| 'name' => 'reference-checkbox-plain-array', | |
| 'object_type' => 'field', | |
| 'options' => | |
| array ( | |
| array ( | |
| 'key' => '1', | |
| 'value' => 'One', | |
| ), | |
| array ( | |
| 'key' => '2', | |
| 'value' => 'Two', | |
| ), | |
| ), | |
| 'type' => 'checkbox', | |
| 'width' => '100%', | |
| 'is_array' => true, | |
| ), | |
| array ( | |
| 'title' => 'reference-iconpicker', | |
| 'name' => 'reference-iconpicker', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'iconpicker', | |
| ), | |
| array ( | |
| 'title' => 'reference-media-id', | |
| 'name' => 'reference-media-id', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'media', | |
| 'value_format' => 'id', | |
| ), | |
| array ( | |
| 'title' => 'reference-media-url', | |
| 'name' => 'reference-media-url', | |
| 'object_type' => 'field', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'media', | |
| 'width' => '100%', | |
| 'value_format' => 'url', | |
| ), | |
| array ( | |
| 'title' => 'reference-media-array-id-url', | |
| 'name' => 'reference-media-array-id-url', | |
| 'object_type' => 'field', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'media', | |
| 'width' => '100%', | |
| 'value_format' => 'both', | |
| ), | |
| array ( | |
| 'title' => 'reference-gallery-id', | |
| 'name' => 'reference-gallery-id', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'gallery', | |
| 'value_format' => 'id', | |
| ), | |
| array ( | |
| 'title' => 'reference-gallery-url', | |
| 'name' => 'reference-gallery-url', | |
| 'object_type' => 'field', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'gallery', | |
| 'width' => '100%', | |
| 'value_format' => 'url', | |
| ), | |
| array ( | |
| 'title' => 'reference-gallery-array-id-url', | |
| 'name' => 'reference-gallery-array-id-url', | |
| 'object_type' => 'field', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'gallery', | |
| 'width' => '100%', | |
| 'value_format' => 'both', | |
| ), | |
| array ( | |
| 'title' => 'reference-radio', | |
| 'name' => 'reference-radio', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| array ( | |
| 'key' => '1', | |
| 'value' => 'One', | |
| ), | |
| array ( | |
| 'key' => '2', | |
| 'value' => 'Two', | |
| ), | |
| ), | |
| 'type' => 'radio', | |
| ), | |
| array ( | |
| 'title' => 'reference-repeater', | |
| 'name' => 'reference-repeater', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'repeater', | |
| 'repeater-fields' => | |
| array ( | |
| array ( | |
| 'title' => 'field-1', | |
| 'name' => 'field-1', | |
| 'type' => 'text', | |
| ), | |
| array ( | |
| 'title' => 'field-2', | |
| 'name' => 'field-2', | |
| 'type' => 'checkbox', | |
| 'options' => | |
| array ( | |
| array ( | |
| 'key' => '1', | |
| 'value' => 'One', | |
| ), | |
| array ( | |
| 'key' => '2', | |
| 'value' => 'Two', | |
| ), | |
| ), | |
| 'is_array' => true, | |
| ), | |
| ), | |
| 'repeater_collapsed' => true, | |
| 'repeater_title_field' => 'field-1', | |
| ), | |
| array ( | |
| 'title' => 'reference-select', | |
| 'name' => 'reference-select', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| array ( | |
| 'key' => '1', | |
| 'value' => 'One', | |
| 'id' => 2878, | |
| ), | |
| array ( | |
| 'key' => '2', | |
| 'value' => 'Two', | |
| ), | |
| ), | |
| 'type' => 'select', | |
| ), | |
| array ( | |
| 'title' => 'reference-select-multiple', | |
| 'name' => 'reference-select-multiple', | |
| 'object_type' => 'field', | |
| 'options' => | |
| array ( | |
| array ( | |
| 'key' => '1', | |
| 'value' => 'One', | |
| ), | |
| array ( | |
| 'key' => '2', | |
| 'value' => 'Two', | |
| ), | |
| ), | |
| 'type' => 'select', | |
| 'width' => '100%', | |
| 'is_multiple' => true, | |
| ), | |
| array ( | |
| 'title' => 'reference-number', | |
| 'name' => 'reference-number', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'number', | |
| 'isNested' => false, | |
| ), | |
| array ( | |
| 'title' => 'reference-colorpicker', | |
| 'name' => 'reference-colorpicker', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'colorpicker', | |
| ), | |
| array ( | |
| 'title' => 'reference-posts', | |
| 'name' => 'reference-posts', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'posts', | |
| 'search_post_type' => | |
| array ( | |
| 'post', | |
| 'page', | |
| ), | |
| ), | |
| array ( | |
| 'title' => 'reference-posts-multiple', | |
| 'name' => 'reference-posts-multiple', | |
| 'object_type' => 'field', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'posts', | |
| 'width' => '100%', | |
| 'search_post_type' => | |
| array ( | |
| 'post', | |
| 'page', | |
| ), | |
| 'is_multiple' => true, | |
| ), | |
| array ( | |
| 'title' => 'reference-html', | |
| 'name' => 'reference-html', | |
| 'object_type' => 'field', | |
| 'width' => '100%', | |
| 'options' => | |
| array ( | |
| ), | |
| 'type' => 'html', | |
| 'html' => 'some html', | |
| 'html_css_class' => 'some-classes', | |
| ), | |
| ); | |
| $title = 'Reference meta'; | |
| $post_type = 'post'; | |
| $args = array( | |
| 'object_type' => 'post', | |
| 'allowed_post_type' => $post_type, | |
| 'name' => $title, | |
| ); | |
| if ( ! class_exists( 'Jet_Engine_CPT_Meta' ) ) { | |
| require $meta->component_path( 'post.php' ); | |
| } | |
| $meta->store_fields( $post_type, $meta_fields, 'post_type' ); | |
| new Jet_Engine_CPT_Meta( $post_type, $meta_fields, $title, 'normal', 'high', $args ); | |
| $taxonomy = 'category'; | |
| $tax_args = array( | |
| 'object_type' => 'taxonomy', | |
| 'allowed_tax' => array( $taxonomy ), | |
| 'name' => $title, | |
| ); | |
| if ( ! class_exists( 'Jet_Engine_CPT_Tax_Meta' ) ) { | |
| require $meta->component_path( 'tax.php' ); | |
| } | |
| $meta->store_fields( $taxonomy, $meta_fields, 'taxonomy' ); | |
| new Jet_Engine_CPT_Tax_Meta( $taxonomy, $meta_fields, $tax_args ); | |
| $user_args = array ( | |
| 'object_type' => 'user', | |
| 'name' => $title, | |
| 'allowed_user_screens' => 'edit-profile', | |
| ); | |
| if ( ! class_exists( 'Jet_Engine_CPT_User_Meta' ) ) { | |
| require $meta->component_path( 'user.php' ); | |
| } | |
| $object_name = $user_args['name'] . ' ' . __( '(User fields)', 'jet-engine' ); | |
| $meta->store_fields( $object_name, $meta_fields, 'user' ); | |
| new Jet_Engine_CPT_User_Meta( $user_args, $meta_fields ); | |
| } ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment