Say what?


An easy-to-use plugin that allows you to change translatable strings from plugins / themes and WordPress core without editing code. Simply enter the current string, and what you want to replace it with and the plugin will automatically do the rest!

The plugin’s available for forking and contribution over on GitHub

Check out Say What Pro for:

  • String Discovery and autocomplete – find the strings you need without diving through code. Works with server-side and Javascript-rendered strings
  • Improved performance using text-domain-specific filters
  • Wildcard string replacements – replace individual words, or fragments across your whole site
  • Multi-lingual support – set different replacements for different languages on multi-lingual sites
  • Import/export features – Easy import/export of replacements through the user interface

Support this free plugin

As a business, we already donate a percentage of our profits from premium plugins to global climate change projects. You’re free to use this plugin free of charge, but if you do, please consider buying the world some trees in return. You’ll be creating employment for local families and restoring wildlife habitats.


  • List of configured string replacements
  • Adding/editing a replacement


  • Install it as you would any other plugin
  • Activate it
  • Head over to Tools » Text changes and configure some string replacements


Can I use it to change any string?

You can only use the plugin to translate strings which are marked for translation.

How do I find the string to translate?

You can either have a guess, or checkout the plugin in question’s source code, translatable strings are generally wrapped in __(), _e(), _n(), or _x(), for example:

$foo = __('This is a translatable string', 'plugin-domain');

The article here shows some examples of what you’re looking for. Alternatively, the Pro version of the plugin provides a String Discovery mode which means you can search for strings on your site via autocomplete suggestions.

Is there any support for importing replacements?

“Say What?” has preliminary support for exporting, and importing replacements via The following commands are currently

  • export – Export all current string replacements.
  • import – Import string replacements from a CSV file.
  • list – Export all current string replacements. Synonym for ‘export’.
  • update – update string replacements from a CSV file.

See the GitHub homepage for examples.

Can I set different replacements for different languages?

Not in the free plugin, however this is available in the Pro version of the plugin


August 24, 2023 4 replies
This is the plugin’s description:An easy-to-use plugin that allows you to alter strings on your site without editing WordPress core, or plugin code. Simply enter the current string, and what you want to replace it with and the plugin will automatically do the rest! I tried it with this string: <div id=”wrapper”> that I want to replace with: <div class=”wrapper”>, but nothing happened.It says in the description that I only need to enter the current string, and what you want to replace it with and the plugin will automatically do the rest. But it doesn’t work that way.
June 9, 2023 1 reply
Does exactly what it supposed to do. Don’t need to change the core file for changing strings we want to translate. You will need to find the exact string name and it’s location (site domain).
June 1, 2022 1 reply
I was in the process of creating a webshop with a Woocommerce and Blocksy theme. With this plugin, I’ve translated a few strings from the Blocksy theme which I didn’t translate with a Loco Translate plugin. Soo cool!
Read all 90 reviews

Contributors & Developers

“Say what?” is open source software. The following people have contributed to this plugin.


“Say what?” has been translated into 13 locales. Thank you to the translators for their contributions.

Translate “Say what?” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Change: Internal package updates
  • Change: Compatibility with WordPress 6.6


  • Fix: Resolve issue where replacements weren’t made if an external object cache was in use.


  • Change: Internal refactor of classes


  • Change: Minor admin UI changes


  • Fix: Include missing image


  • Change: Admin UI updates


  • Change: Styling & documentation updates.


  • Fix: Avoid warning when sorting list table.


  • Change: Localisation improvements


  • Change: Updates to Javascript dependencies.


  • Change: Updates to Javascript dependencies, smaller JS footprint.


  • Fix: Resolve issue where console errors could be thrown if no replacements configured.


  • New: Optimise performance when an external object cache is available
  • Fix: Imports via WP-CLI could fail if the pro extension had previously been active


  • Reduce size of bundled images
  • Update dev build scripts


  • Improve Javascript performance, and remove lodash dependency (resolves some plugin conflicts)


  • Support for translatable strings rendered through WordPress Javascript framework
  • Supports replacing text in Gutenberg / WooCommerce admin / WooCommerce blocks
  • Update details of Say What? Pro vs free plugin


  • Fix issue where replacement table disappeared at small screen widths
  • Update WordPress compatibility
  • Changes to donation / upsell content


  • Fix link in documentation


  • WordPress 5.5 compatibility
  • Changes to Treeware links


  • Ensure help links open in new windows


  • Fix link target in Treeware content


  • Suggest Treeware donations


  • Update information about Pro features


  • Fix issue adding more strings after downgrade from Pro
  • Update text domain of plugin to match guidelines to aid translations


  • Documentation updates only


  • Update plugin links, include settings and upgrade link
  • Update documentation about pro features
  • Admin styling fixes


  • Fix issues where entities could be double encoded on admin screens.


  • Update to admin marketing message. No functional changes.


  • Support for _n() and _nx()
  • Support for multi-line strings


Introduce filters that allows back compatibility for plugins that change their text-domain. Props Pippin Williamson


Avoid warnings on initial activation.
Avoid issues where strings contain HTML / entities


Add info box about Pro version


Support for WP-CLI import and export.


Swap database to UTF-8 to fix problems entering non-ASCII strings.


Fix incorrect escaping on the admin screens.


Fix initial DB table creation
Fix translations for strings with no domain


Allow strings with context to be replaced


Documentation improvements


Avoid wpdb->prepare warning
Minor admin fixes, don’t double translate strings


Fix issue with fields being swapped when first entered


Beta ready for testing and feedback