By default WordPress taxonomies (categories, tags, etc) have the fields name, slug, parent, and description. Recently while working on a client’s project, we found a need to add custom meta fields to custom taxonomies. We needed a way to add custom text on each taxonomy archive page. One way would be to hard code the text using the conditional statements in our taxonomy-{name}.php file. That would be a very inefficient way of doing so, and it would give our client no way to modify the text in the future. So we decided to future proof the situation by adding custom meta fields to custom taxonomies. In this article, we will show you how to add additional custom meta fields to custom taxonomies.
Note: This tutorial is for designers and developers.
While searching for an efficient method, we came across Pippin’s tutorial that shows you how to do this. While his tutorial was great, it required us to write a lot of code. We decided to search a little bit further to see if someone has created an easier way to do this. Perhaps a plugin or a class. Thankfully, we found a solution by Ohad Raz on Github. After going through the same issue, he decided to write a class to make it easy for everyone else (got to love the WordPress community). Thanks Ohad.
In our case, we decided to add this functionality as a plugin rather than in a theme. You can choose the method you like. For the sake of this tutorial, we will go the plugin route.
First thing you need to do is download the Tax-Meta-Class from Github. Create a new folder and call it “taxonomy-fields”. Save the “Tax-meta-class” folder inside that folder.
The zip comes with a file called class-usage-demo.php. Just rename that file, and call it taxonomy-fields.php
Ohad did a great job in documenting the file, so it is pretty self-explanatory. He has examples of all type of fields you can add (text field, textarea, checkbox, select, radio, date, time, color picker, file upload, etc). You don’t have to use all the fields. Simply get rid of the ones you don’t want.
Once you are done adding the fields, upload the taxonomy-fields folder in your plugins folder. Activate the plugin, and add data in your fields.
Now, you are ready to display these additional fields in your taxonomy template. Open your taxonomy template. This would be something like taxonomy-{taxonomy-name}.php file. In there, you can simply add the following:
<?php //Get the correct taxonomy ID by slug $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); //Get Taxonomy Meta $saved_data = get_tax_meta($term->term_id,'text_field_id'); echo $saved_data; ?>
That’s it. These classes make it really easy and improve your workflow. We hope that this tutorial has helped you in adding custom meta fields to custom taxonomies.







@ Editor please forgive me, How do i output a text field
You have to use the PHP code that we shared. Make sure to change the field name to the one that you have.
Thanks editor i really appreciate for the reply, This is how class-usage-demo.php – http://pastebin.com/ctZPeS0w
This is what i’m doing but not displaying/outputting anything what am i doing wrong..? and is it possible to display the code (if possible) anywhere in my theme…Thanks
The code you have is simply setting up the admin side of things. To display the code, look at the PHP code that we have shared in the article. You have to use that in your taxonomy archive file.
its cool..
but where it save the data…? in postmeta table or it create a new table?
It does it in the options table.
can we change the backend of this plugin..i mean we want to create a termmeta table (meta_id,term_id,meta_key,meta_value) ..and save the taxonomy meta here…or connect it with this plugin? http://wordpress.org/extend/plugins/simple-term-meta/
Cool stuff. I will implement this on our blog in the future.
Oh thanks you so much, I’ve been wondering how to identify tags as being English or Spanish for my bilingual site – this helps enormously
I actually just finished coding up custom fields for a custom taxonomy for a project I’m working on. I love the flexibility – will certainly check out the plugin for future projects!
Yes that is the best part about it. We love stumbling onto libraries like this one which makes the life of developers much easier.