WordPress: get_terms() returnerer 0, selv om der er posts i de pågældende terms

På en kundes side hvor vi bulk-gemmer posts via en api ved hjælp af wp_insert_post() og en brugerdefineret import, havde jeg opdaget en fejl hvor termer bliver rigtig nok angivet på de nye indlæg, men den opdaterer ikke term_taxonomy-tællingen, hvilket gjorde at et term som havde posts stod som at have ingen, hvilket kunne resulterer i at get_posts ville returnerer 0 objekter.

En løsning er denne lille funktion til wp_update_term_count_now() som opdaterer term tællingen med det samme. Min funktion ser sådan her ud:


add_action('init','reset_counts');
function reset_counts() {
	$tax = 'bilmaerke';
	$terms = get_terms( [ 'taxonomy' =>$tax, 'hide_empty' => false,'fields' => 'ids' ] );
	foreach ( $terms as $term ) {
		wp_update_term_count_now( $terms, $tax);
	}
}

Ovenstående funktion kører via init som et engangskald, men man kunne også sætte den til at kører via et wp_cron eller et normalt cronjob, så man løbende sikre sig at posts hentes for de rigtige term_count for hver term.