How to Add Custom Fields to Custom Taxonomies in WordPress CLEANLY

Saving extra fields that were added to a taxonomy. I want the most proper & efficient way of doing so. Where should I save the new fields?

2 possible solutions are to

1) Use the WordPress options table as described here… Add Custom Fields to Custom Taxonomies. This is admittedly “not clean” and assumed not to be the correct answer.

// A callback function to save our extra taxonomy field(s)
function save_taxonomy_custom_fields( $term_id ) {
if ( isset( $_POST['term_meta'] ) ) {
    $t_id = $term_id;
    $term_meta = get_option( "taxonomy_term_$t_id" );
    $cat_keys = array_keys( $_POST['term_meta'] );
        foreach ( $cat_keys as $key ){
        if ( isset( $_POST['term_meta'][$key] ) ){
            $term_meta[$key] = $_POST['term_meta'][$key];
        }
    }
    //save the option array
    update_option( "taxonomy_term_$t_id", $term_meta );
}
}

2) Add a new table as described here Custom Taxonomies in WordPress which follows the naming convention of ‘wp_’ + customtaxonomykey + ‘meta’.

3) Some other option

5 s
5

Option 2 is the cleanest method – which I’ve also used a number of times. Unfortunately, there is no default term_metadata table in WordPress yet. This post also covers the same approach, http://shibashake.com/wordpress-theme/add-term-or-taxonomy-meta-data

And of course, there’s a plugin for that too 🙂 http://wordpress.org/extend/plugins/taxonomy-metadata/

Leave a Comment