It sounds like you're familiar with WCAG (Web Content Accessibility Guidelines), but just in case others are not, there are two guidelines for links (not buttons).
2.4.4 Link Purpose (In Context) [Level A]
2.4.9 Link Purpose (Link Only) [Level AAA]
Minimally (Level A), the purpose of a link can be determined by the link text and its context. So if you had a link embedded in a paragraph of text, the user would need to have the paragraph in addition to the link text to understand it. For example:
<p> For more information on health benefits, <a href="#">click here</a>.</p>
Technically, this passes WCAG 2.4.4 because the link is embedded in the paragraph but it's not a great user experience. If a screen read user brings up a dialog displaying a list of all links, they will just see/hear "click here" and not have the surrounding context.
A better solution, which satisfies WCAG 2.4.9, is to have
<p>See <a href="#">health benefits</a>, for more information.</p>
Now my link will say "health benefits" instead of "click here" and I'll know what the link is for.
Now, getting back to your original question, which is about buttons, they too should have sufficient information so that the label on the button, taken out of context, makes sense. But rather than falling under WCAG 2.4.4, buttons are addressed in WCAG 4.1.2
4.1.2 Name, Role, Value [Level A]
In your scenario, if I'm on a shopping page and I hear "save and continue", I am probably going to know that "continue" means continue shopping and probably don't need the extra context. It's kind of a judgement call. If you think "save and continue shopping" makes more sense, then that should probably be the visible label on the button so that everyone can benefit from it rather than adding "shopping" as hidden text that only a screen reader can hear.