Categories, Tags, Product Attributes, Brands (or any taxonomy terms) don’t appear on subsites

If you have any issues with taxonomies, please check this guide. It will also help if WooCommerce product variations aren’t crossposted properly.

1. Make sure that you have the same terms created on all sites

If you need a crossposted post on Site 2 to have the same categories (tags, taxonomy terms) as it has on Site 1, these categories should be created on Site 2 manually beforehand, with the same slugs they have on Site 1.

Why the plugin can not do it automatically? Because it will have a negative effect on your website in terms of performance.

The same applies to WooCommerce taxonomy-based attributes. Let me remind you that there are two types of product attributes in WooCommerce:

2 types of WooCommerce product attributes
“Magical” – is a custom product attribute, “Color” – is a predefined taxonomy-based attribute.

For custom product attributes you have to do nothing – they are going to be crossposted with their product without any issues. For taxonomy-based product attributes please go to Products > Attributes and create all the same on Site 2 as well (slugs should match).

If something remains unclear for you, please check the video below:

Anyway if creating terms manually on sub-sites is not an option and performance isn’t such a big deal for you, you can install and activate this free add-on:

Download Simple WP Crossposting – Terms 2.1

The add-on will work with the plugin version 4.5 and above.

Please keep in mind, with this add-on you don’t need to create taxonomy terms, but it doesn’t register taxonomies (and doesn’t create attribute taxonomies). For example, if you have a taxonomy attribute “Color”, and a specific color, “Dark blue”, the colors will created by the add-on, but not the taxonomy!

By the way, if you’re using a multisite version of the plugin, you can easily turn on terms crossposting in the plugin settings.

2. When working with custom taxonomies, do not forget to include them in REST API when you register them

For example when you’re registering a custom taxonomy my-taxonomy using the function register_taxonomy() you have to make sure that the show_in_rest argument is set to true.

register_taxonomy( 
	'my-taxonomy', 
	'page', 
	array(
		
		...
		
		'show_in_rest' => true,
	)
);

If you don’t have access to the initial register_taxonomy() function (maybe it is registered with some third-party plugin and you can not change its files, then you can feel free to use the register_taxonomy_args filter hook.

The same example:

add_filter( 'register_taxonomy_args', function( $args, $taxonomy ) {
	
	if( 'my-taxonomy' === $taxonomy ) {
		$args[ 'show_in_rest' ] = true;
	}
	
	return $args;

}, 9999, 2 );

Another example – allowing both “Event Organizer” and “Event Location” taxonomies to be synced when using EventON third-party plugin:

add_filter( 'register_taxonomy_args', function( $args, $taxonomy ) {
	
	if( 'event_location' === $taxonomy || 'event_organizer' === $taxonomy ) {
		$args[ 'show_in_rest' ] = true;
	}
	
	return $args;

}, 9999, 2 );

This snippet must be used at least on the target site, but you can insert it into both sending and receiving sites if you wish.

Need more help?