Can’t see custom field after the Loop [closed]

When you output your get_posts results and do this:

setup_postdata($post);

You overwrite the original value of $post which the_field uses to fetch the field data. It’s trying to get that field belonging to the last post in $products_mono_posts instead of the page that the field actually belongs to.

After running custom queries where the value of the global $post is modified, you need to call wp_reset_postdata() to restore the value of $post to its original value.