table_tags and table_tag_cache are updated in two cases:

1. Upon submitting a new story.
2. Every time a story is edited.

In the first case, in \\submit.php, LINE 428, we find a call to a function in the \\libs\\tags.php file: tags_insert_string($linkres->id, $dblang, $linkres->tags);

However, at this stage the status of the story being submitted is still ‘discard’, while in the Function tags_insert_string, it specifically selects from table_links only the links that meet the status of published or new, therefore the new tags entered for story being submitted won’t be included and won’t appear in the tag cloud until the next submit (and again the newest tags won’t be included) or when the admin deletes the discarded stories from the admin section and automatically rebuilds the table_tag_cache.

After following the logic of the process, the best place to call the Function tags_insert_string is after we make sure that the story’s status is set to publish, right after this call: $linkres->check_should_publish();