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.