{"id":22346,"date":"2013-03-08T21:19:54","date_gmt":"2013-03-08T21:19:54","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/say-what\/"},"modified":"2026-03-03T09:31:18","modified_gmt":"2026-03-03T09:31:18","slug":"say-what","status":"publish","type":"plugin","link":"https:\/\/li.wordpress.org\/plugins\/say-what\/","author":3577361,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.2.6","stable_tag":"2.2.6","tested":"6.9.4","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Say What?","header_author":"Ademti Software","header_description":"","assets_banners_color":"6a6a5d","last_updated":"2026-03-03 09:31:18","external_support_url":"https:\/\/plugins.leewillis.co.uk\/downloads\/say-what-pro\/?utm_source=wporg&utm_medium=plugin&utm_campaign=saywhatproupgradebtn","external_repository_url":"","donate_link":"http:\/\/plugins.leewillis.co.uk\/downloads\/say-what-pro?utm_source=wordpress&utm_medium=www&utm_campaign=say-what","header_plugin_uri":"https:\/\/github.com\/leewillis77\/say-what","header_author_uri":"https:\/\/plugins.leewillis.co.uk\/","rating":4.3,"author_block_rating":0,"active_installs":40000,"downloads":707866,"num_ratings":90,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.9":{"tag":"0.9","author":"leewillis77","date":"2013-03-08 22:15:34"},"0.9.1":{"tag":"0.9.1","author":"leewillis77","date":"2013-03-09 14:38:14"},"0.9.2":{"tag":"0.9.2","author":"leewillis77","date":"2014-02-19 21:42:30"},"0.9.3":{"tag":"0.9.3","author":"leewillis77","date":"2014-06-04 19:04:29"},"1.0":{"tag":"1.0","author":"leewillis77","date":"2014-08-10 15:01:31"},"1.0.1":{"tag":"1.0.1","author":"leewillis77","date":"2014-08-21 19:57:30"},"1.1":{"tag":"1.1","author":"leewillis77","date":"2014-10-06 20:24:42"},"1.3":{"tag":"1.3","author":"leewillis77","date":"2015-03-21 16:05:17"},"1.4":{"tag":"1.4","author":"leewillis77","date":"2015-04-19 20:37:34"},"1.5":{"tag":"1.5","author":"leewillis77","date":"2015-08-10 18:22:47"},"1.6":{"tag":"1.6","author":"leewillis77","date":"2015-09-25 20:45:15"},"1.7":{"tag":"1.7","author":"leewillis77","date":"2016-04-11 16:32:21"},"1.7.1":{"tag":"1.7.1","author":"leewillis77","date":"2016-07-28 09:07:29"},"1.8.0":{"tag":"1.8.0","author":"leewillis77","date":"2016-11-21 12:19:15"},"1.8.1":{"tag":"1.8.1","author":"leewillis77","date":"2016-12-16 11:20:24"},"1.8.2":{"tag":"1.8.2","author":"leewillis77","date":"2017-01-06 11:12:17"},"1.9.0":{"tag":"1.9.0","author":"leewillis77","date":"2017-06-05 10:01:31"},"1.9.1":{"tag":"1.9.1","author":"leewillis77","date":"2019-10-29 16:30:18"},"1.9.2":{"tag":"1.9.2","author":"leewillis77","date":"2020-02-05 14:53:51"},"1.9.3":{"tag":"1.9.3","author":"leewillis77","date":"2020-02-06 10:08:36"},"1.9.4":{"tag":"1.9.4","author":"leewillis77","date":"2020-03-16 10:11:28"},"1.9.5":{"tag":"1.9.5","author":"leewillis77","date":"2020-07-20 10:53:47"},"1.9.6":{"tag":"1.9.6","author":"leewillis77","date":"2020-11-24 08:50:49"},"1.9.7":{"tag":"1.9.7","author":"leewillis77","date":"2021-02-02 12:52:10"},"2.0.0":{"tag":"2.0.0","author":"leewillis77","date":"2021-03-15 11:42:25"},"2.0.1":{"tag":"2.0.1","author":"leewillis77","date":"2021-03-17 12:01:13"},"2.0.2":{"tag":"2.0.2","author":"leewillis77","date":"2022-05-09 09:16:34"},"2.1.0":{"tag":"2.1.0","author":"leewillis77","date":"2022-10-31 14:13:20"},"2.1.1":{"tag":"2.1.1","author":"leewillis77","date":"2022-08-26 20:23:59"},"2.1.2":{"tag":"2.1.2","author":"leewillis77","date":"2022-11-09 11:37:16"},"2.1.3":{"tag":"2.1.3","author":"leewillis77","date":"2023-01-08 09:03:37"},"2.1.4":{"tag":"2.1.4","author":"leewillis77","date":"2023-03-21 10:36:41"},"2.1.5":{"tag":"2.1.5","author":"leewillis77","date":"2023-10-25 15:26:51"},"2.1.6":{"tag":"2.1.6","author":"leewillis77","date":"2023-11-28 15:01:20"},"2.1.7":{"tag":"2.1.7","author":"leewillis77","date":"2024-01-23 15:22:13"},"2.1.8":{"tag":"2.1.8","author":"leewillis77","date":"2024-01-23 15:24:10"},"2.1.9":{"tag":"2.1.9","author":"leewillis77","date":"2024-02-26 09:01:42"},"2.2.1":{"tag":"2.2.1","author":"leewillis77","date":"2024-03-11 14:25:35"},"2.2.2":{"tag":"2.2.2","author":"leewillis77","date":"2024-04-10 10:11:31"},"2.2.3":{"tag":"2.2.3","author":"leewillis77","date":"2024-07-09 08:18:11"},"2.2.4":{"tag":"2.2.4","author":"leewillis77","date":"2024-08-20 14:09:13"},"2.2.5":{"tag":"2.2.5","author":"leewillis77","date":"2025-12-02 09:40:58"},"2.2.6":{"tag":"2.2.6","author":"leewillis77","date":"2026-03-03 09:31:18"}},"upgrade_notice":[],"ratings":{"1":14,"2":2,"3":1,"4":3,"5":70},"assets_icons":{"icon-128x128.jpg":{"filename":"icon-128x128.jpg","revision":970013,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.jpg":{"filename":"icon-256x256.jpg","revision":970013,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":678352,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3473434,"resolution":false,"location":"assets","locale":"","contents":"{\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=say_what_admin\",\"preferredVersions\":{\"php\":\"8.0\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"steps\":[{\"step\":\"installPlugin\",\"options\":{\"activate\":true},\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"say-what\"}},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/sample-replacements.csv\",\"data\":{\"resource\":\"url\",\"url\":\"https:\\\/\\\/raw.githubusercontent.com\\\/leewillis77\\\/say-what\\\/sample-replacement-branch\\\/sample-replacements.csv\"}},{\"step\":\"wp-cli\",\"command\":\"wp say-what import \\\/wordpress\\\/sample-replacements.csv\"},{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"}]}"}},"all_blocks":[],"tagged_versions":["0.9","0.9.1","0.9.2","0.9.3","1.0","1.0.1","1.1","1.3","1.4","1.5","1.6","1.7","1.7.1","1.8.0","1.8.1","1.8.2","1.9.0","1.9.1","1.9.2","1.9.3","1.9.4","1.9.5","1.9.6","1.9.7","2.0.0","2.0.1","2.0.2","2.1.0","2.1.1","2.1.2","2.1.3","2.1.4","2.1.5","2.1.6","2.1.7","2.1.8","2.1.9","2.2.1","2.2.2","2.2.3","2.2.4","2.2.5","2.2.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3002804,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3002804,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"List of configured string replacements","2":"Adding\/editing a replacement"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1972,17768,2333],"plugin_category":[48],"plugin_contributors":[78962],"plugin_business_model":[216238],"class_list":["post-22346","plugin","type-plugin","status-publish","hentry","plugin_tags-change","plugin_tags-string","plugin_tags-translation","plugin_category-language-tools","plugin_contributors-leewillis77","plugin_business_model-commercial","plugin_committers-leewillis77"],"banners":{"banner":"https:\/\/ps.w.org\/say-what\/assets\/banner-772x250.png?rev=678352","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/say-what\/assets\/icon-128x128.jpg?rev=970013","icon_2x":"https:\/\/ps.w.org\/say-what\/assets\/icon-256x256.jpg?rev=970013","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/say-what\/assets\/screenshot-1.png?rev=3002804","caption":"List of configured string replacements"},{"src":"https:\/\/ps.w.org\/say-what\/assets\/screenshot-2.png?rev=3002804","caption":"Adding\/editing a replacement"}],"raw_content":"<!--section=description-->\n<p>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!<\/p>\n\n<p>The plugin's available for forking and contribution over on <a href=\"https:\/\/github.com\/leewillis77\/say-what\">GitHub<\/a><\/p>\n\n<p>Check out <a href=\"https:\/\/plugins.leewillis.co.uk\/downloads\/say-what-pro\/\">Say What Pro<\/a> for:<\/p>\n\n<ul>\n<li><strong>String Discovery and autocomplete<\/strong> - find the strings you need without diving through code. Works with server-side and Javascript-rendered strings<\/li>\n<li><strong>Improved performance<\/strong> using text-domain-specific filters<\/li>\n<li><strong>Wildcard string replacements<\/strong> - replace individual words, or fragments across your whole site<\/li>\n<li><strong>Multi-lingual support<\/strong> - set different replacements for different languages on multi-lingual sites<\/li>\n<li><strong>Import\/export features<\/strong> - Easy import\/export of replacements through the user interface<\/li>\n<\/ul>\n\n<h3>Support this free plugin<\/h3>\n\n<p>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 <a href=\"https:\/\/ecologi.com\/ademtisoftware?gift-trees&amp;r=ademtisoftware\">buying the world some trees<\/a> in return. You'll be creating employment for local families and restoring wildlife habitats.<\/p>\n\n<!--section=installation-->\n<ul>\n<li>Install it as you would any other plugin<\/li>\n<li>Activate it<\/li>\n<li>Head over to Tools &raquo; Text changes and configure some string replacements<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20use%20it%20to%20change%20any%20string%3F\"><h3>Can I use it to change any string?<\/h3><\/dt>\n<dd><p>You can only use the plugin to translate strings which are marked for translation.<\/p><\/dd>\n<dt id=\"how%20do%20i%20find%20the%20string%20to%20translate%3F\"><h3>How do I find the string to translate?<\/h3><\/dt>\n<dd><p>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:<\/p>\n\n<pre><code>$foo = __('This is a translatable string', 'plugin-domain');\n<\/code><\/pre>\n\n<p>The article <a href=\"https:\/\/plugins.leewillis.co.uk\/doc_post\/replacing-wordpress-strings-context\/\">here<\/a> shows some examples of what you're looking for. Alternatively, the <a href=\"https:\/\/plugins.leewillis.co.uk\/downloads\/say-what-pro\/\">Pro version of the plugin<\/a> provides a String Discovery mode which means you can search for strings on your site via autocomplete suggestions.<\/p><\/dd>\n<dt id=\"is%20there%20any%20support%20for%20importing%20replacements%3F\"><h3>Is there any support for importing replacements?<\/h3><\/dt>\n<dd><p>\"Say What?\" has preliminary support for exporting, and importing replacements via <a href=\"WP-CLI\">http:\/\/wp-cli.org\/<\/a>. The following commands are currently\nsupported:<\/p>\n\n<ul>\n<li>export - Export all current string replacements.<\/li>\n<li>import - Import string replacements from a CSV file.<\/li>\n<li>list - Export all current string replacements. Synonym for 'export'.<\/li>\n<li>update - update string replacements from a CSV file.<\/li>\n<\/ul>\n\n<p>See the <a href=\"https:\/\/github.com\/leewillis77\/say-what\">GitHub homepage<\/a> for examples.<\/p><\/dd>\n<dt id=\"can%20i%20set%20different%20replacements%20for%20different%20languages%3F\"><h3>Can I set different replacements for different languages?<\/h3><\/dt>\n<dd><p>Not in the free plugin, however this is available in the <a href=\"https:\/\/plugins.leewillis.co.uk\/downloads\/say-what-pro\/\">Pro version of the plugin<\/a><\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.2.6<\/h4>\n\n<ul>\n<li>Dependency bumps &amp; WordPress compat improvements<\/li>\n<\/ul>\n\n<h4>2.2.5<\/h4>\n\n<ul>\n<li>General tidy-ups and maintenance<\/li>\n<\/ul>\n\n<h4>2.2.4<\/h4>\n\n<ul>\n<li>Fix: Do not generate warning on initial install<\/li>\n<\/ul>\n\n<h4>2.2.3<\/h4>\n\n<ul>\n<li>Change: Internal package updates<\/li>\n<li>Change: Compatibility with WordPress 6.6<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Fix: Resolve issue where replacements weren't made if an external object cache was in use.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Change: Internal refactor of classes<\/li>\n<\/ul>\n\n<h4>2.1.9<\/h4>\n\n<ul>\n<li>Change: Minor admin UI changes<\/li>\n<\/ul>\n\n<h4>2.1.8<\/h4>\n\n<ul>\n<li>Fix: Include missing image<\/li>\n<\/ul>\n\n<h4>2.1.7<\/h4>\n\n<ul>\n<li>Change: Admin UI updates<\/li>\n<\/ul>\n\n<h4>2.1.6<\/h4>\n\n<ul>\n<li>Change: Styling &amp; documentation updates.<\/li>\n<\/ul>\n\n<h4>2.1.5<\/h4>\n\n<ul>\n<li>Fix: Avoid warning when sorting list table.<\/li>\n<\/ul>\n\n<h4>2.1.4<\/h4>\n\n<ul>\n<li>Change: Localisation improvements<\/li>\n<\/ul>\n\n<h4>2.1.3<\/h4>\n\n<ul>\n<li>Change: Updates to Javascript dependencies.<\/li>\n<\/ul>\n\n<h4>2.1.2<\/h4>\n\n<ul>\n<li>Change: Updates to Javascript dependencies, smaller JS footprint.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Fix: Resolve issue where console errors could be thrown if no replacements configured.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>New: Optimise performance when an external object cache is available<\/li>\n<li>Fix: Imports via WP-CLI could fail if the pro extension had previously been active<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Reduce size of bundled images<\/li>\n<li>Update dev build scripts<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Improve Javascript performance, and remove lodash dependency (resolves some plugin conflicts)<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Support for translatable strings rendered through WordPress Javascript framework<\/li>\n<li>Supports replacing text in Gutenberg \/ WooCommerce admin \/ WooCommerce blocks<\/li>\n<li>Update details of Say What? Pro vs free plugin<\/li>\n<\/ul>\n\n<h4>1.9.7<\/h4>\n\n<ul>\n<li>Fix issue where replacement table disappeared at small screen widths<\/li>\n<li>Update WordPress compatibility<\/li>\n<li>Changes to donation \/ upsell content<\/li>\n<\/ul>\n\n<h4>1.9.6<\/h4>\n\n<ul>\n<li>Fix link in documentation<\/li>\n<\/ul>\n\n<h4>1.9.5<\/h4>\n\n<ul>\n<li>WordPress 5.5 compatibility<\/li>\n<li>Changes to Treeware links<\/li>\n<\/ul>\n\n<h4>1.9.4<\/h4>\n\n<ul>\n<li>Ensure help links open in new windows<\/li>\n<\/ul>\n\n<h4>1.9.3<\/h4>\n\n<ul>\n<li>Fix link target in Treeware content<\/li>\n<\/ul>\n\n<h4>1.9.2<\/h4>\n\n<ul>\n<li>Suggest Treeware donations<\/li>\n<\/ul>\n\n<h4>1.9.1<\/h4>\n\n<ul>\n<li>Update information about Pro features<\/li>\n<\/ul>\n\n<h4>1.9.0<\/h4>\n\n<ul>\n<li>Fix issue adding more strings after downgrade from Pro<\/li>\n<li>Update text domain of plugin to match wordpress.org guidelines to aid translations<\/li>\n<\/ul>\n\n<h4>1.8.2<\/h4>\n\n<ul>\n<li>Documentation updates only<\/li>\n<\/ul>\n\n<h4>1.8.1<\/h4>\n\n<ul>\n<li>Update plugin links, include settings and upgrade link<\/li>\n<li>Update documentation about pro features<\/li>\n<li>Admin styling fixes<\/li>\n<\/ul>\n\n<h4>1.8.0<\/h4>\n\n<ul>\n<li>Fix issues where entities could be double encoded on admin screens.<\/li>\n<\/ul>\n\n<h4>1.7.1<\/h4>\n\n<ul>\n<li>Update to admin marketing message. No functional changes.<\/li>\n<\/ul>\n\n<h4>1.7<\/h4>\n\n<ul>\n<li>Support for _n() and _nx()<\/li>\n<li>Support for multi-line strings<\/li>\n<\/ul>\n\n<h4>1.6<\/h4>\n\n<p>Introduce filters that allows back compatibility for plugins that change their text-domain. Props Pippin Williamson<\/p>\n\n<h4>1.5<\/h4>\n\n<p>Avoid warnings on initial activation.\nAvoid issues where strings contain HTML \/ entities<\/p>\n\n<h4>1.4<\/h4>\n\n<p>Add info box about Pro version<\/p>\n\n<h4>1.3<\/h4>\n\n<p>Support for WP-CLI import and export.<\/p>\n\n<h4>1.2<\/h4>\n\n<p>Swap database to UTF-8 to fix problems entering non-ASCII strings.<\/p>\n\n<h4>1.1<\/h4>\n\n<p>Fix incorrect escaping on the admin screens.<\/p>\n\n<h4>1.0.1<\/h4>\n\n<p>Fix initial DB table creation\nFix translations for strings with no domain<\/p>\n\n<h4>1.0<\/h4>\n\n<p>Allow strings with context to be replaced<\/p>\n\n<h4>0.9.3<\/h4>\n\n<p>Documentation improvements<\/p>\n\n<h4>0.9.2<\/h4>\n\n<p>Avoid wpdb-&gt;prepare warning\nMinor admin fixes, don't double translate strings<\/p>\n\n<h4>0.9.1<\/h4>\n\n<p>Fix issue with fields being swapped when first entered<\/p>\n\n<h4>0.9<\/h4>\n\n<p>Beta ready for testing and feedback<\/p>","raw_excerpt":"An easy-to-use plugin that allows you to change translatable strings from plugins \/ themes and WordPress core without editing code.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/22346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=22346"}],"author":[{"embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/leewillis77"}],"wp:attachment":[{"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=22346"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=22346"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=22346"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=22346"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=22346"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/li.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=22346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}