Exclude Categories or Tags from Instant Articles

Version 1.5.0 or greater

Use the code below to prevent articles in a certain category getting converted. Just replace 'noinstant' with the SLUG of your category.

/**
 * Use this function to stop posts syncing via ALL methods.
 *
 * @param  bool $should_convert Whether the post should be converted or not.
 * @param  WP_Post $post The WP Post being acted upon.
 * @return bool
 */
function wpna_custom_should_convert( $should_convert, $post ) {
	// Don't convert the post if it is in a certain category.
	if ( has_category( array( 'noinstant' ), $post ) ) {
		return false;
	}


	return $should_convert;
}
add_filter( 'wpna_should_convert_post_ia', 'wpna_custom_should_convert', 10, 2 );

Before Version 1.5.0

You can use the code below to only convert posts to Instant Articles that have a certain category or tag. Simply add the code to your theme's functions.php file and change 'my-category-slug' to the slug of the category you want to exclude.

/**
 * Use this function to stop posts syncing via the API & Crawler ingestion.
 *
 * @param  string $value   on or off
 * @param  string $name    Name of the option 'fbia_sync_articles'
 * @param  string $default
 * @param  int    $post_id
 * @return string
 */
function wpna_custom_post_sync( $value, $name, $default, $post_id ) {


	// Don't convert the post if it is in a certain category.
	if ( has_category( array( 'my-category-slug' ), $post_id ) ) {
		$value = 'off';
	}


	// Return 'on' to sync the post.
	// Return 'off' not to sync the post.
	return $value;
}
add_filter( 'wpna_get_post_option_fbia_sync_articles', 'wpna_custom_post_sync', 10, 4 );
add_filter( 'wpna_get_option_fbia_crawler_ingestion', 'wpna_custom_post_sync', 10, 4 );


/**
 * Use this function to remove articles from the RSS Feed.
 *
 * @return WP_Query
 */
function wpna_custom_feed_query( $query ) {


	if ( function_exists( 'wpna_get_option' ) ) {
		// Requested option name, / value to default to.
		$feed_slug = wpna_get_option( 'fbia_feed_slug' );


		if ( $query->is_feed( $feed_slug ) && $query->is_main_query() ) {
			$query->set( 'category__not_in', array('my-category-slug' ) );
		}
	}


	return $query;
}
add_filter( 'pre_get_posts', 'wpna_custom_feed_query', 10, 1 );

Still need help? Contact Us Contact Us