Thanks to DannyHamilton for a thorough and helpful response.
I think I'll start another thread about the single-use donation problem. I use WordPress, perhaps we can create a plugin for it, if it doesn't exist already.
I've done some experimentation, and there are a couple of solutions for Bitcoin donations on WordPress:
1) You can install the "Easy Bitcoin Donation Widget" plugin, which provides a very simple QR code with a fixed address. Change it as frequently as you like.
2) You can install the "Give WordPress Donations", "GoUrl.io Payments Gateway", and "GoUrl Bitcoin donation addon" plugins (all three) to generate a unique address for every donation. However, once a donation has been made, it is forwarded to a single fixed address. This can probably be changed as desired too.
Neither of these is quite what I'm after. Ideally I'd like to provide a master public key, which provides a new donation address every time a payment is made. Not 100% sure what this would require. Maybe some sort of processing of the blockchain, to determine when the current donation address has been used?