Custom Post Types
Any custom post types are fully supported by my crossposting plugins. But in some cases a little bit of configuration is required.
1. Allow Your Custom Post Type for Crossposting
If “Publish on” section isn’t displayed for your custom post type at all, then please check that the custom post type is allowed for crossposting in plugin settings:
- Network Admin > Settings > Network Crosspost for multisite version,
- or just Settings > Crosspost for a regular version.
Example:

Not-public post types
In case you decided to leave “Allowed Post Types” option empty, then the crossposting is going to work for all public post types by default. It means that when this custom post type is registered, its public
parameter should be set to true
.
register_post_type(
'articles',
array(
'public' => true, // here it is
...
Yes, seems quite obvious, but sometimes when doing their post type configuration, clients use public => false, show_ui => true
. So it doesn’t change anything in admin UI, but my plugin thinks another way.
2. Configure Your Custom Post Type for Crossposting
Sometimes you may try to crosspost a custom post type but instead when you open a custom post in Block Editor (Gutenberg) or try to create a new one, you get a message like this:

Good news – it is super-easy to fix. All you need to do is to add custom-fields
value to supports
parameter while registering a custom post type. Example:
register_post_type(
'articles',
array(
...
'supports' => array( 'title', 'editor', 'custom-fields' )
)
);
CPT UI example
Or if you’re using a third party plugin for that, for example CPT UI, then just make sure that you have an appropriate checkbox checked.

Pods example
It is done similarly in another custom post type plugin – Pods. Just edit pod and then switch to Advanced Options tab.

functions.php
What if a post type is registered inside another plugin and you don’t want to change its code?
In this case filter hook register_post_type_args is here to help you. Example:
add_filter( 'register_post_type_args', function( $args, $post_type ) {
if( 'POST TYPE NAME' === $post_type ) {
// we just add 'custom-fields' to an existing array of supported stuff
$args[ 'supports' ][] = 'custom-fields';
}
return $args;
}, 10, 2 );
Or you can use add_post_type_support()
function.
add_action( 'init', function() {
add_post_type_support( 'POST TYPE NAME', 'custom-fields' );
}, 999 );
Other Issues
Sometimes the conflict can be created by a 3rd party plugin. So if you tried everything mentioned in this article and nothing helped, please try to deactivate your website plugins one by one and see if it makes any difference.
For example recently I found a conflict in “Kia Subtitle” plugin. Once I deactivated that plugin, all started to work great.
Also you can see on the plugin’s page that it is outdated and may not work properly.
