Add a thumbnail to your taxonomy terms.
This plugin is meant for developers, it allows to attach a thumbnail to taxonomy terms.
The thumbnail can be added on term creation or later on the term edition page.
The terms list has a column displaying the current thumbnail (so far, no specific action here).
The plugin uses the “new” media window (the one used since WP 3.5), not the old thickbox.
I made some extra efforts to enhance accessibility. I’m not an a11y expert but the UI is not only a “Add thumbnail” button. For instance, the new wp.a11y.speak()
is used when available. Please give me feedback if you think it can be improved.
Works with or without JavaScript.
If JavaScript is enabled, thumbnails are set via ajax in the term edition window, no need to update the term.
By default, the UI is displayed for all public taxonomies, but this can be filtered that way:
add_filter( 'sftth_taxonomies', 'my_taxonomies_with_thumbnail' ); function my_taxonomies_with_thumbnail( $taxonomies ) { unset( $taxonomies['post_tag'] ); $taxonomies['my_custom_tax'] = 'my_custom_tax'; return $taxonomies; }
Find them in inc/template-tags.php
.
Important note: for WP 4.4+, these functions use term_id
. For WP < 4.4, they use term_taxonomy_id
.
I tried to mimic the post thumbnail functions:
get_term_thumbnail_id( $term_id )
: Retrieve term thumbnail ID.has_term_thumbnail( $term_id )
: Check if a term has a thumbnail attached to it.the_term_thumbnail( $term_id, $size = 'post-thumbnail', $attr = '' )
: Display the term thumbnail.get_term_thumbnail( $term_id, $size = 'post-thumbnail', $attr = '' )
: Retrieve the term thumbnail.set_term_thumbnail( $term_id, $thumbnail_id )
: Set a term thumbnail.delete_term_thumbnail( $term_id )
: Detach a thumbnail from a term.From WordPress 4.4, the term metas API is used.
Below WordPress 4.4, there are two ways to store the thumbnail IDs:
term_taxonomy_id
=> thumbnail_id
integers). The option name can be customized by defining the constant SFTTH_OPTION_NAME
in wp-config.php
.Use get_terms()
with a specific parameter to retrieve only terms with a thumbnail:
$terms = get_terms( array( 'with_thumbnail' => true, ) );
From WordPress 4.4, you can also use a small helper to build your meta query:
$terms = get_terms( array( 'meta_query' => array( 'relation' => 'AND', array( // Any meta query. ), sftth_meta_query(), ), ) );
Below WordPress 4.4, if you use the plugin Meta for Taxonomies, you should always cache thumbnails.
When using 'with_thumbnail' => false
you will retrieve all terms, even those without a thumbnail, but the thumbnails will be cached, saving calls to the database later:
$terms = get_terms( array( 'with_thumbnail' => false, ) );
When uninstalling the plugin, you can decide to not delete the thumbnails, simply define a constant in wp-config.php
:
define( 'SFTTH_KEEP_DATA', true );
Should work starting from WP 3.5, but tested only in WP 4.2.2+ so far.
Photo used for the banner by Nicolas Janik (CC BY 2.0).
sf-taxonomy-thumbnail
folder to your /wp-content/plugins/
directory.If you use WordPress 4.4 or greater you don’t need to.
Otherwise, I think it’s the proper way to store this kind of data. Post thumbnails are stored in post metas, right? So term thumbnails should be stored in term metas.
But it requires a plugin, WordPress does not provide a term metas system before 4.4. On the other hand, I don’t want to force you to use a dependency, so I wanted my plugin to also work without it.
Nope, it will not happen, imho there is no point to do so.
Eventually, try the WordPress support forum.
term_taxonomy_id
anymore, but term_id
instead.term_taxonomy_id
s into term_id
s, and delete old data (only the plugin data of course). Then if you used Meta for Taxonomies, it can be uninstalled afterward. Side note: in case Meta for Taxonomies is not updated by then, you should deactivate it BEFORE updating to WordPress 4.4 (it is not compatible with WP 4.4 yet, and will trigger a fatal error).inc/migrate.php
.