PHPackages                             tfrommen/linked-taxonomies - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. tfrommen/linked-taxonomies

ActiveWordpress-plugin[Utility &amp; Helpers](/categories/utility)

tfrommen/linked-taxonomies
==========================

This plugin links two (or more) taxonomies and synchronizes their terms.

v1.2.0(10y ago)111[2 issues](https://github.com/tfrommen/linked-taxonomies/issues)GPL-3.0PHPPHP &gt;=5.3.0

Since Nov 12Pushed 10y ago1 watchersCompare

[ Source](https://github.com/tfrommen/linked-taxonomies)[ Packagist](https://packagist.org/packages/tfrommen/linked-taxonomies)[ Docs](https://github.com/tfrommen/linked-taxonomies)[ RSS](/packages/tfrommen-linked-taxonomies/feed)WikiDiscussions master Synced today

READMEChangelog (4)Dependencies (4)Versions (2)Used By (0)

Linked Taxonomies
=================

[](#linked-taxonomies)

[![Latest Stable Version](https://camo.githubusercontent.com/bedddecd53d2c98e401f8bb64dc9699a777c176b72969f93e23d900061bbbcb5/68747470733a2f2f706f7365722e707567782e6f72672f7466726f6d6d656e2f6c696e6b65642d7461786f6e6f6d6965732f762f737461626c65)](https://packagist.org/packages/tfrommen/linked-taxonomies)[![Project Status](https://camo.githubusercontent.com/5b5a2250da48f45495a817a4bcdabb5d101fff298acebe00a55a52815b7119ed/687474703a2f2f6f70656e736f757263652e626f782e636f6d2f6261646765732f6163746976652e737667)](http://opensource.box.com/badges)[![Build Status](https://camo.githubusercontent.com/50a6c4915aabeb677eaa18d7b3cacc535a98a0821442840ee92ef409b4ed419d/68747470733a2f2f7472617669732d63692e6f72672f7466726f6d6d656e2f6c696e6b65642d7461786f6e6f6d6965732e7376673f6272616e63683d6d6173746572)](http://travis-ci.org/tfrommen/linked-taxonomies)[![License](https://camo.githubusercontent.com/49b96df6300c2d1a5dbef0af9c69f166366e96e8e75542fe012d88a8305c771d/68747470733a2f2f706f7365722e707567782e6f72672f7466726f6d6d656e2f6c696e6b65642d7461786f6e6f6d6965732f6c6963656e7365)](https://packagist.org/packages/tfrommen/linked-taxonomies)

Have you ever had to work with two or more taxonomies that basically share the same terms? And then you got tired of propagating all the changes you made on one taxonomy's terms to the other taxonomies?

This is exactly when *Linked Taxonomies* kicks in.

There are several good reasons for having individual taxonomies that consist of the same set of terms. One is if these taxonomies are registered for different sets of post types. Or *object* types, to be more precise, as you can also use taxonomies and terms on comments or users. Another good reason is using one *source* taxonomy that is visible to certain user roles, and link one or more completely hidden *target* taxonomies that you only use automatically in the background.

Installation
------------

[](#installation)

1. [Download ZIP](https://github.com/tfrommen/linked-taxonomies/archive/master.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. Find the new *Taxonomies* menu item in the *Settings* menu in your WordPress backend.

Usage
-----

[](#usage)

What this plugin is all about is providing a means to link specific taxonomies, either unidirectionally or bidirectionally, and synchronize their terms. And doing this is quite simple. On the *Taxonomies* admin page, you can set up links for your taxonomies. Hit the *Save Changes* button, and you're done already. Any change on a linked taxonomy's terms will automatically be propagated to all linked taxonomies.

### Filters

[](#filters)

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.

#### `edit_linked_taxonomies_capability`

[](#edit_linked_taxonomies_capability)

Editing linked taxonomies is restricted to a certain capability, which is by default `manage_options`.

```
/**
 * Filters the capability required to edit linked taxonomies.
 *
 * @param string $capability Capability required to edit linked taxonomies.
 */
add_filter( 'edit_linked_taxonomies_capability', function() {

	return 'manage_categories';
} );
```

#### `linkable_taxonomies`

[](#linkable_taxonomies)

Depending on how exactly you want to work with the plugin, you may want to define which taxonomies are linkable. This filter provides the array of taxonomies queried according to the args. Feel free to remove whichever taxonomy you don't want to be available for linking. If all you would like to do is to set query args that will be passed to the `get_taxonomies` function, please have a look at the `linked_taxonomies_get_taxonomies_args` filter.

```
/**
 * Filters the taxonomies that are available for linking.
 *
 * @param object[] $taxonomies Taxonomy objects.
 */
add_filter( 'linkable_taxonomies', function( $taxonomies ) {

	// Remove taxonomies that are not built in but public
	foreach ( $taxonomies as $key => $taxonomy ) {
		if ( ! $taxonomy->_builtin && $taxonomy->public ) {
			unset( $taxonomies[ $key ] );
		}
	}

	return $taxonomies;
} );
```

#### `linked_taxonomies_get_taxonomies_args`

[](#linked_taxonomies_get_taxonomies_args)

If you want to alter the (by default empty) set of query args that are used for querying all linkable taxonomies, this filter is a good starting point. For more complex conditions/checks, please have a look at the more powerful `linkable_taxonomies` filter that provides the array of taxonomies available for linking.

```
/**
 * Filters the args for getting all taxonomies.
 *
 * @param array $args Taxonomies args.
 */
add_filter( 'linked_taxonomies_get_taxonomies_args', function() {

	// Only list taxonomies that are hierarchical and show their individual tag cloud
	return array(
		'hierarchical'  => 1,
		'show_tagcloud' => 1,
	);
} );
```

#### `list_linked_taxonomies_capability`

[](#list_linked_taxonomies_capability)

Accessing the plugin's settings page is restricted, too. In order to distinguish between users who are only allowed to list linked taxonomies, and users, who are able to edit linked taxonomies, there are two individual capabilities. The default for accessing the settings page is `manage_categories`.

```
/**
 * Filters the capability required to list linked taxonomies.
 *
 * @param string $capability Capability required to list linked taxonomies.
 */
add_filter( 'list_linked_taxonomies_capability', function() {

	return 'manage_options';
} );
```

Contribution
------------

[](#contribution)

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.

Changelog
---------

[](#changelog)

[Changelog](CHANGELOG.md)

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3886d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/6049306?v=4)[Thorsten Frommen](/maintainers/tfrommen)[@tfrommen](https://github.com/tfrommen)

---

Top Contributors

[![tfrommen](https://avatars.githubusercontent.com/u/6049306?v=4)](https://github.com/tfrommen "tfrommen (8 commits)")

---

Tags

wordpress-pluginlinkduplicateReferencetaxonomytermsynchronizetaxonomiesterms

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/tfrommen-linked-taxonomies/health.svg)

```
[![Health](https://phpackages.com/badges/tfrommen-linked-taxonomies/health.svg)](https://phpackages.com/packages/tfrommen-linked-taxonomies)
```

###  Alternatives

[helsingborg-stad/municipio

A bootstrap theme for creating municipality sites.

4028.5k10](/packages/helsingborg-stad-municipio)[mediawiki/maps

Adds various mapping features to MediaWiki

84152.3k3](/packages/mediawiki-maps)[aliziodev/laravel-taxonomy

Laravel Taxonomy is a flexible and powerful package for managing taxonomies, categories, tags, and hierarchical structures in Laravel applications. Features nested-set support for optimal query performance on hierarchical data structures.

24426.4k](/packages/aliziodev-laravel-taxonomy)[civicrm/civicrm-drupal-8

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

19251.4k3](/packages/civicrm-civicrm-drupal-8)[altis/core

Core module for Altis

19228.0k3](/packages/altis-core)[sylius/taxonomy-bundle

Flexible categorization system for Symfony.

26411.5k9](/packages/sylius-taxonomy-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
