Learn how to leverage the power of WordPress custom meta boxes and fields to better organize your site, make it easier to update content, and manage your data more efficiently. We’ll cover how to set everything up in code using native WordPress functions, plugins that will speed up the process, as well as ways to display all the data on your website. We’ll also touch on the new Metadata API being developed as a feature plugin in WordPress Core to see what’s coming in the future.
3. What are Custom Fields and
Meta boxes?
• Custom Fields allow you to attach additional
information (metadata) to a post, page, custom
post type, etc
• http://codex.wordpress.org/Custom_Fields
• Meta boxes are for separating and grouping
your Custom Fields into logical panels in the
post/page editor screen
6. Adding Custom Fields and Meta
boxes using Core functions
Add the Meta Box
add_meta_box(
$id,
$title,
$callback,
$post_type,
$context,
$priority,
$callback_args
);
7. Adding Custom Fields and Meta
boxes using Core functions
Create a Nonce and render the Meta Box via
callback function
wp_nonce_field(
'myplugin_meta_box',
'myplugin_meta_box_nonce'
);
8. Adding Custom Fields and Meta
boxes using Core functions
Verify the nonce, sanitize the data and update the Post Meta
sanitize_text_field(
$_POST['myplugin_new_field']
);
update_post_meta(
$post_id,
'_my_meta_value_key',
$my_data
);
9. Displaying Custom Field
data in your Theme
get_post_meta(
$post_id,
$key,
$single
);
$key_1_value = get_post_meta(
get_the_ID(), 'key_1', true );
http://codex.wordpress.org/Function_Reference/
get_post_meta
10. Playing Nice with the
New REST API
• Protected meta (prefixed with _) needs authorization to be
accessed by the API. Gets hooked to ‘init’ or ‘plugins_loaded’
!
register_meta(
$meta_type,
$meta_key,
$sanitize_callback,
$auth_callback = null
);
!
register_meta( 'post', '_my_meta_key',
'', '__return_true' );
12. Adding Custom Fields and Meta
boxes using Core functions
Full code examples in Codex:
http://codex.wordpress.org/Function_Reference/
add_meta_box#Procedural
http://codex.wordpress.org/Function_Reference/
add_meta_box#Class
14. With a Little Help From My Friends
!
Plugins to create Custom Fields and Meta boxes
• Advanced Custom Fields (ACF)
• Custom Field Suite (CFS)
• Pods
• Custom Metaboxes and Fields
23. Pods
• Output data multiple ways into your theme:
!
pods_field_display( $pod, $id,
$name, $single);
!
pods_image( $image, $size,
$default, $attributes, $force );
• Custom Pods loops, templates, pages
24. Pods
• Extremely powerful!
• Creates Custom Post Types and Taxonomies as well
as Custom Fields
• Able to extend Users, Comments, etc
• More complex than other plugins/solutions
• No loop fields (coming in v3.0)
• No meta box management (coming in v3.0)
26. Custom Metaboxes and
Fields
• Framework to create meta boxes and fields in
code
• Can be embedded in custom plugins
• Uses native WordPress functions for display
get_post_meta( $post_id, $key,
$single );
30. Well, it Depends…
• Plugins like ACF, CFS and Pods are the easiest
solution for adding data for most sites
• Custom Metaboxes and Fields and Core
functions are better for custom plugins, building
web apps with WordPress
33. Metadata UI API
• A work in progress
• API to add fields and forms (meta boxes) to posts, pages,
custom post types. In the future, plans to add forms and
fields to options, users, comments, taxonomy terms,
media, etc.
• Any plugin using forms will be able to interface with the
API to display them, both on the back-end and public
forms
• Make Core easier for creating custom fields and meta
boxes for developers
34. Metadata UI API Example
Register new Form (meta box). User, Option
Group, Comment Forms planned for later.
!
register_post_form(
$form_name,
$post_type,
$form_args
);
35. Metadata UI API Example
Add Fields to Post Type. Fields can be inside a
Form (meta box) or in the editor at any point.
!
register_post_field(
$field_name,
$post_type,
$field_args
);
36. Metadata UI API
• UI/UX in progress for displaying custom fields
and meta boxes on post type edit screens
• Plugin authors will be able to extend field types,
HTML templates, form types, etc.
37. Come Together
• You can help!
• Follow along with the development on Github
https://github.com/wordpress-metadata/
metadata-ui-api
• Weekly meetings on IRC in
#wordpress-core-plugins Friday’s at 2pm ET
38. Hello, Goodbye
!
Thank You!
If you have any questions, let me know!
!
matt@collectivthkg.com
!
Twitter: @mattbanks
!
Skype: mattbanks-14
!
!
https://github.com/mattbanks/strawberry-custom-fields-forever