This plugin registers a taxonomy that provides a high-performance means to query posts in a somewhat meta-based way.

Installs: 8

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0


v1.3.0 2015-10-22 19:50 UTC

This package is auto-updated.

Last update: 2024-07-15 14:56:47 UTC


Latest Stable Version Project Status Build Status License

Have you ever wanted to query posts based on the condition that a specific meta is set or equal to a given value, but then you heard/learnt how inefficient a (complex) meta query actually is?

This is exactly when Meta Taxonomy kicks in.

Disclaimer: This plugin is not intended to replace the post meta API in general. There are (a lot of) cases where using a post meta makes much more sense than using a term, or where using a term is simply impossible.


  1. Download ZIP.
  2. Upload contents to the /wp-content/plugins directory on your web server.
  3. Activate the plugin through the Plugins menu in WordPress.
  4. Be impressed by how fast your meta-tax queries can get, compared to ordinary meta queries.


To be honest, this plugin is no big deal. It just provides you with a one-click solution for using high-performance taxonomy-based meta-like queries. Once the plugin is activated, you can assign terms of the new meta taxonomy to your posts, and then query the posts in a highly efficient way (compared to meta queries).


In order to customize certain aspects of the plugin, it provides you with several filters. For each of these, a short description as well as a code example on how to alter the default behavior is given below. Just put the according code snippet in your theme's functions.php file or your customization plugin, or to some other appropriate place.


If you want to alter a specific taxonomy argument but you can't find a fitting filter, there's meta_taxonomy_args, which provides you with the complete args array.

 * Filters the taxonomy args.
 * @param array $args Taxonomy args.
add_filter( 'meta_taxonomy_args', function( $args ) {

	// Turn the whole taxonomy UI invisible
	$args[ 'show_ui' ] = FALSE;
	return $args;
} );


This filter provides you with the the capabilities required for the four taxonomy-specific actions manage_terms, edit_terms, delete_terms and assign_terms.

 * Filters the taxonomy capabilities.
 * @param string[] $capabilities Taxonomy capabilities.
add_filter( 'meta_taxonomy_capabilities', function( $capabilities ) {

	// Let meta taxonomy terms be deleted by admins only
	$capabilities[ 'delete_terms' ] = 'manage_options';
	return $capabilities;
} );


If you want to alter the taxonomy description, feel free to do it via this filter.

 * Filters the taxonomy description.
 * @param string $description Taxonomy description.
add_filter( 'meta_taxonomy_description', function() {

	// Kill the description
	return '';
} );


In case you don't like the labels, easily adapt them to your liking.

 * Filters the taxonomy labels.
 * @param string[] $labels Taxonomy labels.
add_filter( 'meta_taxonomy_labels', function( $labels ) {
	// A little more horror, please...
	$labels[ 'not_found' ] = 'ZOMG, no metas found!!1!!1!!oneone!!!1!eleven!1!';
	return $labels;
} );


Yes, you can also alter the taxonomy name (slug).

 * Filters the taxonomy name.
 * @param string $name Taxonomy name.
add_filter( 'meta_taxonomy_name', function() {
	// Rename it
	return 'meta_term';
} );


By default, the meta taxonomy is registered for default posts (i.e., post type post) only. If you would like add other custom post types, do this by using this filter. You can either return a single post type slug, or an array of them.

 * Filters the taxonomy object types.
 * @param string[] $object_types Array of names of object types for the taxonomy.
add_filter( 'meta_taxonomy_object_types', function( $object_types ) {
	// Add the taxonomy for pages and a CPT, too
	return array_unique( array_merge( (array) $object_types, array(
	) ) );
} );


In order to make use of a specific functionality, there may be a function already. To prevent any incompatibility, all global plugin functions are pluggable. In the rare case where you already have a function within the global namespace with a plugin function's name, you would have to set up such a function by yourself. In principle, this is just a copy of what you can find in the functions.php file of this plugin.


If you want to check wether a specific post has a specific meta term, you can do this by means of the plugin's has_meta_term function.

if ( has_meta_term( get_the_ID(), 'popular' ) ) {
	// Do something


If you have a feature request, or if you have developed the feature already, please feel free to use the Issues and/or Pull Requests section.

Of course, you can also provide me with translations if you would like to use the plugin in another not yet included language.