Rating: 4 stars
If all you need is adding few custom metaboxes here and there to couple them with some other functionalities, this is a very clean solution. Saved me a ton of work!
]]>Rating: 3 stars
After using this plugin for several projects I’m lowering from 5 to 3 stars, and going with another plugin (or build my own) for future projects.
Now this isn’t a terrible plugin, it does work well and hasn’t caused any catastrophes. But there is so much room for improvement, and it’s difficult to expand on. I assume most people who will use this plugin are developers who would eventually want to extend some part of the plugin – and you’re going to be frustrated with this one.
My Complaints:
1. Out of date (media) uploader. It uses the old-school uploader and requires you to click “Insert into post” to return the URL into the text box. It’s not difficult to use the media uploader, and in fact it’s easier to use the new one. Just use “wp_enqueue_media()” and the wp.media property is available to you!
2. No “multiple select” field. If you enable “multiple” for a select field, it gives you a warning that it cannot be multipled. Not sure why, I don’t see why this wouldn’t work.
3. No default values. I thought this would be an obvious feature, when I came to look what the key was called, it wasn’t there. What?..
4. Poor extensibility. I’ve actually tried to fix the issues above, but the plugin is NOT well-written. Trying to add new fields is a hassle, and you have to re-invent the wheel. You can’t just insert a single button next to an input and keep the rest of the functionality. There is a severe lack of action hooks. You have to redeclare the entire field-rendering function, and provide multiple-field support yourself, even though the original function already does this. Trying to add a new field_type doesn’t work, and you end up having to use a display_callback and sanatize_callback instead.
5. No sorting. You can’t sort items. Even worse, if you set up a custom system to sort the items the ordering is not preserved when saving and it seems to be randomized. I didn’t have any problem using this system with my own plugin, so I think this plugin is saving fields in an unusual way. In addition, if you have a “multiple” field, the first value is empty. And it is also the only one which does not have a delete button. It should be reversed, and a multiplied field should always show a delete but for every element (the last element would just reset).
6. Checkbox layout is bad. If you have a checkbox, the label shows above it. The checkbox sits on a new line, all by itself. Really hacky. Like they took the code from a regular text input and just replace the text box with a checkbox (which is exactly why it is this way). You can’t even use the “description” key to display a label next to it.
7. Adding fields is a hassle. A much simpler way to define meta boxes would be to use an array of groups, each containing their post types and args array, as well as an array of fields. Your entire structure can be set up in one array and one function. But they do it some weird way where you have to assign fields to post types and reference the group from within each field. It’s just really awkward. Here is what I’ve come up with for building my groups: https://gist.github.com/RadGH/c4b3a2d43a36b9b2ac97
]]>Rating: 5 stars
Not a plugin for the faint of heart for sure (it has no UI and is “all code”), because you’ve got to know your way around coding things in WP pretty well to get it to work for you. But once you do, this little gem will make adding strong features to your site very simple.
In my case, I needed to add a few extra meta data items to my users. I didn’t want to use a plugin “suite” of meta addons because I only needed one or two elements. With Custom Metadata Manager I was able to only add the items I needed, and do so in a very “official” WP feeling sort of way. By that I mean the coding and the functions mesh nicely with WP and make it feel like a system component, not a plugin.
]]>Rating: 5 stars
Saves hours of development time.
]]>Rating: 5 stars
After adding the call below to an action_menu hook it just worked:
x_add_metadata_field( ‘my_new_id’, ‘user’, array(‘label’ => ‘my_new_id’, ‘display_column’ => true) );
An admin could then set and maintain the new field in the normal way (select [Users -> All Users] …).
]]>