{"id":386723,"date":"2026-10-25T07:28:22","date_gmt":"2026-10-25T07:28:22","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/global-site-variables\/"},"modified":"2026-10-25T07:28:09","modified_gmt":"2026-10-25T07:28:09","slug":"glovario","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/glovario\/","author":23584677,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Glovario \u2013 Reusable Site Content","header_author":"BottegaWP","header_description":"Define reusable site content once and render it anywhere with a shortcode or block.","assets_banners_color":"624b76","last_updated":"2026-10-25 07:28:09","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/ko-fi.com\/bottegawp","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":76,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"bottegawp","date":"2026-10-25 07:28:09","revision":3764057}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3764057,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3764057,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3764057,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3764057,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3764057,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"glovario\/site-variable":{"apiVersion":3,"name":"glovario\/site-variable","version":"1.0.0","title":"Site Variable","category":"widgets","icon":"database","description":"Display the current value of a Glovario variable.","textdomain":"glovario","attributes":{"key":{"type":"string","default":"","role":"content"},"dateFormat":{"type":"string","default":"long"},"imageSize":{"type":"string","default":"full"}},"supports":{"html":false},"editorScript":"file:.\/index.js","editorStyle":"file:.\/editor.css"},"glovario\/locale-switcher":{"apiVersion":3,"name":"glovario\/locale-switcher","version":"1.0.0","title":"Glovario Language Switcher","category":"widgets","icon":"translation","description":"Switch the WordPress request locale and Site Variables in standalone mode.","textdomain":"glovario","attributes":{"showCodes":{"type":"boolean","default":false}},"supports":{"html":false},"editorScript":"file:.\/index.js"}},"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3764057,"resolution":"1","location":"assets","locale":"","width":2880,"height":1800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3764057,"resolution":"2","location":"assets","locale":"","width":2880,"height":1800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3764057,"resolution":"3","location":"assets","locale":"","width":2880,"height":1800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3764057,"resolution":"4","location":"assets","locale":"","width":2880,"height":1800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3764057,"resolution":"5","location":"assets","locale":"","width":3360,"height":2000},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3764057,"resolution":"6","location":"assets","locale":"","width":2232,"height":720},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3764057,"resolution":"7","location":"assets","locale":"","width":2880,"height":1800}},"screenshots":{"1":"Select text in the block editor and click Make variable: it becomes a reusable variable, with a category and optional language and scheduled values.","2":"Replace everywhere now: the same text on your other pages, each place shown in context with a checkbox, so you choose which ones become the variable.","3":"Insert variable: search your variables and insert one at the cursor.","4":"The same buttons in Elementor's Text Editor widget (and in the Classic Editor and Beaver Builder).","5":"All variables in one list, with categories, values, and ready-to-copy shortcodes and tokens.","6":"A scheduled value and an Italian value for one variable.","7":"The built-in language switcher: visitors choose a language and your variables follow."}},"plugin_section":[],"plugin_tags":[2487,99,54012,80,2276],"plugin_category":[43,48],"plugin_contributors":[288315],"plugin_business_model":[],"class_list":["post-386723","plugin","type-plugin","status-publish","hentry","plugin_tags-dynamic-content","plugin_tags-multilingual","plugin_tags-reusable-content","plugin_tags-shortcode","plugin_tags-variables","plugin_category-customization","plugin_category-language-tools","plugin_contributors-bottegawp","plugin_committers-bottegawp"],"banners":{"banner":"https:\/\/ps.w.org\/glovario\/assets\/banner-772x250.png?rev=3764057","banner_2x":"https:\/\/ps.w.org\/glovario\/assets\/banner-1544x500.png?rev=3764057","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/glovario\/assets\/icon.svg?rev=3764057","icon":"https:\/\/ps.w.org\/glovario\/assets\/icon.svg?rev=3764057","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/glovario\/assets\/screenshot-1.png?rev=3764057","caption":"Select text in the block editor and click Make variable: it becomes a reusable variable, with a category and optional language and scheduled values."},{"src":"https:\/\/ps.w.org\/glovario\/assets\/screenshot-2.png?rev=3764057","caption":"Replace everywhere now: the same text on your other pages, each place shown in context with a checkbox, so you choose which ones become the variable."},{"src":"https:\/\/ps.w.org\/glovario\/assets\/screenshot-3.png?rev=3764057","caption":"Insert variable: search your variables and insert one at the cursor."},{"src":"https:\/\/ps.w.org\/glovario\/assets\/screenshot-4.png?rev=3764057","caption":"The same buttons in Elementor's Text Editor widget (and in the Classic Editor and Beaver Builder)."},{"src":"https:\/\/ps.w.org\/glovario\/assets\/screenshot-5.png?rev=3764057","caption":"All variables in one list, with categories, values, and ready-to-copy shortcodes and tokens."},{"src":"https:\/\/ps.w.org\/glovario\/assets\/screenshot-6.png?rev=3764057","caption":"A scheduled value and an Italian value for one variable."},{"src":"https:\/\/ps.w.org\/glovario\/assets\/screenshot-7.png?rev=3764057","caption":"The built-in language switcher: visitors choose a language and your variables follow."}],"raw_content":"<!--section=description-->\n<p>Select any text in the block editor, the Classic Editor, Elementor (the Text Editor widget and Elementor 4's Paragraph, Heading, and Button), or Beaver Builder's Text Editor module and click <strong>Make variable<\/strong>: it becomes a reusable Site Variable and is replaced with its shortcode. The same dialog finds the text in your other posts and pages, shows every place in context, and replaces only the ones you choose. Click <strong>Insert variable<\/strong> to drop an existing variable into any sentence.<\/p>\n\n<p>Glovario keeps frequently repeated public site content in one place. Create a labeled variable such as <code>company_phone<\/code>, then insert <code>[glvr key=\"company_phone\"]<\/code> or select it in the Site Variable block. Updating the variable updates every dynamic usage.<\/p>\n\n<h4>See it in action<\/h4>\n\n<p>Change a phone number once, and every page updates:<\/p>\n\n<p>https:\/\/youtu.be\/-w1jju6I7gQ<\/p>\n\n<p>Give a sentence a second language, and let visitors switch with one click:<\/p>\n\n<p>https:\/\/youtu.be\/53uuPLARLFs<\/p>\n\n<p>A holiday notice and a Christmas logo that switch on by themselves, and back:<\/p>\n\n<p>https:\/\/youtu.be\/TvXr11KHy5s<\/p>\n\n<h4>What's included<\/h4>\n\n<p>Glovario supports Text, Multiline text, URL, Email, Number, and Image values without management limits. Image variables use pictures from your Media Library, so a logo or banner can be changed once everywhere, or differ by language or date. Organize variables into categories; search, filter, sort, and paginate the list; use shortcodes, canonical <code>{{glvr:key}}<\/code> tokens, or the searchable Site Variable block; and copy dynamic read-only WordPress values such as the site name, URL, current year, and current date. A compact Overview, Usage Inspector, safe deletion previews, and guided exact-content conversion help administrators adopt and maintain variables safely.<\/p>\n\n<p>Glovario also schedules alternative values (for example holiday opening hours or a time-limited offer) and gives variables a different value per language for two languages. It follows Polylang, TranslatePress, or Weglot automatically, and for a bilingual site without a multilingual plugin it includes a cookie-based language switcher (site-wide flag, block, or shortcode) that switches WordPress, theme, and plugin texts together with your variables. Editors and clients can be allowed to update values without administrator access. Glovario Provides portable JSON import\/export, dedicated database tables, a small object cache, native WordPress administration, and no generic front-end JavaScript.<\/p>\n\n<p>We're considering a Pro version. If there's something you'd like Glovario to do, tell us through the Share your feedback button on the plugin's screens, which opens a short survey in your language.<\/p>\n\n<p>Site Variables are intended for reusable public content. Do not store passwords, API secrets, access tokens, or credentials.<\/p>\n\n<h3>Privacy and external services<\/h3>\n\n<p>Glovario does not implement telemetry, remote notices, or background calls to external services. The only request it causes is WordPress's own list of available languages, which WordPress fetches from WordPress.org when you open Locale Settings (the same request WordPress makes on its General Settings screen). The Share your feedback button only opens a survey hosted by Tally (https:\/\/tally.so) in a new browser tab when you click it; nothing is sent from your site, and what you choose to answer there is covered by Tally's own privacy policy.<\/p>\n\n<p>When an administrator enables Standalone mode and a visitor chooses a language, the chosen language code is stored for one year in the first-party, HTTP-only, SameSite=Lax <code>glovario_locale<\/code> preference cookie. No visitor data is sent to an external service by the language switcher.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install it through the WordPress Plugins screen.<\/li>\n<li>Activate Glovario.<\/li>\n<li>Start from text you already have: in the block editor, Classic Editor, Elementor, or Beaver Builder, select text you repeat across the site (a phone number, an email address, opening hours) and click <strong>Make variable<\/strong>. Give it a name, and the selection becomes a variable; <strong>Replace everywhere now<\/strong> can swap the same text in the rest of your content too.<\/li>\n<li>To show a variable somewhere else, click <strong>Insert variable<\/strong> where the cursor is, or add the Site Variable block.<\/li>\n<li>You can also create variables by hand under Glovario \u2192 Site Variables in the administration menu and copy their shortcode or token.<\/li>\n<\/ol>\n\n<p>Deactivation does not remove variables. Uninstall removes data only if the administrator first enables the explicit data-removal setting.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20display%20a%20variable%3F\"><h3>How do I display a variable?<\/h3><\/dt>\n<dd><p>Use <code>[glvr key=\"company_phone\"]<\/code>, place <code>{{glvr:company_phone}}<\/code> in supported frontend text content, insert the searchable Site Variable block, or call <code>glovario_get_value( 'company_phone' )<\/code> from theme code.<\/p><\/dd>\n<dt id=\"what%20are%20built-in%20variables%3F\"><h3>What are built-in variables?<\/h3><\/dt>\n<dd><p>Built-ins are read-only values retrieved directly from WordPress, including <code>glovario_builtin_site_name<\/code>, <code>glovario_builtin_site_description<\/code>, <code>glovario_builtin_site_url<\/code>, <code>glovario_builtin_admin_email<\/code>, <code>glovario_builtin_current_year<\/code>, and <code>glovario_builtin_current_date<\/code>. They work through shortcode, token, block, Usage Inspector, and PHP API, and stay current without a saved duplicate.<\/p><\/dd>\n<dt id=\"can%20a%20shortcode%20have%20a%20fallback%3F\"><h3>Can a shortcode have a fallback?<\/h3><\/dt>\n<dd><p>Yes: <code>[glvr key=\"company_phone\" fallback=\"Contact us\"]<\/code>.<\/p><\/dd>\n<dt id=\"can%20one%20variable%20reference%20another%3F\"><h3>Can one variable reference another?<\/h3><\/dt>\n<dd><p>Yes. Text and Multiline values can contain <code>[glvr key=\"another_key\"]<\/code>, including across multiple levels. Nested references inherit the same request and language context, so scheduled and language-specific values apply at every level. Cycles and excessive reference trees stop safely, using the nested shortcode fallback when supplied.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20site%20variable%20in%20a%20page%20or%20post%20title%3F\"><h3>Can I use a Site Variable in a page or post title?<\/h3><\/dt>\n<dd><p>Yes. Enable title integration under Glovario \u2192 Site Variables, then insert a variable from the editor's Site Variable in title panel or type <code>[glvr key=\"company_name\"]<\/code> directly in the title. The shortcode remains visible while editing and resolves on the frontend. Themes and page builders that use WordPress's normal title filters inherit the result; integrations that read the raw database title may need an adapter.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20a%20page%20address%20made%20from%20a%20title%20with%20a%20variable%3F\"><h3>What happens to a page address made from a title with a variable?<\/h3><\/dt>\n<dd><p>When a published title like \"Call us at [glvr key=\u2026]\" gives the page its address, the address uses the value at that moment. If you change the value later, the variable's screen lists the addresses made from the earlier value and asks whether to update them. Old addresses keep working: they redirect to the new ones.<\/p><\/dd>\n<dt id=\"does%20weglot%20translate%20my%20variable%20values%20again%3F\"><h3>Does Weglot translate my variable values again?<\/h3><\/dt>\n<dd><p>Weglot translates the whole page. When a variable has its own value for the visitor's language, Glovario marks it so Weglot leaves it unchanged (in shortcodes, tokens, and the Site Variable block). Titles, menus, and HTML attributes cannot carry that mark: there, correct the text in your Weglot translation list or add a Weglot glossary rule that keeps it unchanged.<\/p><\/dd>\n<dt id=\"is%20the%20value%20copied%20into%20post%20content%3F\"><h3>Is the value copied into post content?<\/h3><\/dt>\n<dd><p>No. Shortcodes, tokens, and blocks store only the variable key and resolve the latest value on every render.<\/p><\/dd>\n<dt id=\"can%20glovario%20convert%20text%20that%20already%20exists%20on%20my%20site%3F\"><h3>Can Glovario convert text that already exists on my site?<\/h3><\/dt>\n<dd><p>Yes. Choose Find matching content after creating a variable, from its row action, or under Glovario \u2192 Content Conversion. Glovario scans only when requested, previews exact matches in standard WordPress post content, lets you select content items, and replaces supported text-node occurrences with <code>{{glvr:key}}<\/code> after confirmation. It preserves WordPress revisions and leaves attributes, URLs, scripts, styles, code\/preformatted regions, shortcodes, unsupported blocks, metadata, widgets\/options, and third-party builder storage untouched.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20delete%20a%20used%20variable%3F\"><h3>What happens when I delete a used variable?<\/h3><\/dt>\n<dd><p>Glovario shows a real detected usage example and lets you leave the reference, replace detected references with the variable's current value, or remove them. Replacement previews highlight the exact change. If no usage is detected, deletion proceeds immediately. Detection is not exhaustive for PHP, themes, plugins, or third-party storage.<\/p><\/dd>\n<dt id=\"can%20i%20store%20passwords%20or%20api%20keys%3F\"><h3>Can I store passwords or API keys?<\/h3><\/dt>\n<dd><p>No. Variables are reusable site content and can be visible on the front end. They are not a secrets vault.<\/p><\/dd>\n<dt id=\"which%20import%20and%20export%20formats%20are%20supported%3F\"><h3>Which import and export formats are supported?<\/h3><\/dt>\n<dd><p>JSON. An export contains your variables, their categories, scheduled and language values, and image references; importing it into another site recreates missing categories and finds the same images in that site's Media Library. Every file is fully validated before anything is written, and a preview shows what would change.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20my%20site%20uses%20more%20than%20two%20languages%3F\"><h3>What happens if my site uses more than two languages?<\/h3><\/dt>\n<dd><p>Glovario is built for bilingual sites: it handles a default language and one second language, and no more. On a site with more languages, variables cannot have a value for the others; visitors in those languages see each variable's default value, and a red notice in the admin names your multilingual plugin and lists the languages concerned. The plugin is still useful there for content that does not change with the language, such as addresses, phone numbers, and email addresses.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20elementor%204%27s%20new%20widgets%3F\"><h3>Does it work with Elementor 4's new widgets?<\/h3><\/dt>\n<dd><p>Yes. The Paragraph, Heading, and Button widgets have the Make variable and Insert variable buttons in their text toolbar, both in the panel and in the floating toolbar when you edit the text directly on the page. The editor canvas shows each variable's current value, and the widget keeps the shortcode, so later changes to the variable appear everywhere.<\/p><\/dd>\n<dt id=\"can%20glovario%20switch%20languages%20without%20another%20multilingual%20plugin%3F\"><h3>Can Glovario switch languages without another multilingual plugin?<\/h3><\/dt>\n<dd><p>Yes, for two languages (the default and one more). In Standalone mode, enable the compact site-wide flag switcher under Locale Settings, insert the Glovario Language Switcher block, or use <code>[glvr_locale_switcher]<\/code>. The site-wide option is off by default and, when enabled, appears with safe spacing in the top-right header area on every public page. A visitor's allowlisted choice switches the frontend WordPress request locale, installed translation files, locale-aware formatting, document language, and locale-conditioned Site Variables together.<\/p>\n\n<p>The switcher does not create or translate separate posts, menus, slugs, media, or URLs. Those require authored translations or a full multilingual plugin. When Polylang, TranslatePress, or a configured Weglot installation is active, Glovario automatically defers to it and hides the standalone selector. An unconfigured Weglot installation does not disable Glovario's selector. With other multilingual plugins, choose the WordPress request locale mode under Locale Settings so Glovario follows the language WordPress uses for each page.<\/p><\/dd>\n<dt id=\"does%20the%20standalone%20language%20switcher%20work%20with%20page%20caching%3F\"><h3>Does the standalone language switcher work with page caching?<\/h3><\/dt>\n<dd><p>Yes, with supported cache plugins. LiteSpeed Cache, WP Super Cache, and W3 Total Cache keep one cached copy per language, so visitors who chose the second language also get cached pages, and saving a variable refreshes every copy. On OpenLiteSpeed servers, restart the web server once after switching to Standalone mode so it applies the new cache rule (Locale Settings reminds you). W3 Total Cache's Disk: Enhanced mode cannot keep a second copy, so Glovario makes visitors who chose the second language skip it (they get correct, uncached pages). Cloudflare, Varnish, and similar caches do not cache visitors with cookies in their standard setup; if yours caches every page (for example a Cloudflare \"Cache Everything\" rule), add a rule that skips the cache when the <code>glovario_locale<\/code> cookie is present. On Cloudflare: Caching, Cache Rules, a rule for <code>(http.cookie contains \"glovario_locale=\")<\/code> with Bypass cache. Locale Settings warns when it recognises Cloudflare, Fastly, or Varnish in front of your site. On Varnish, in <code>vcl_recv<\/code>: <code>if (req.http.Cookie ~ \"glovario_locale=\") { return (pass); }<\/code>. On nginx FastCGI cache: <code>fastcgi_cache_bypass $cookie_glovario_locale; fastcgi_no_cache $cookie_glovario_locale;<\/code>.<\/p>\n\n<p>Locale Settings reports every detected provider, raw and normalized locale mappings, the provider Glovario follows, WordPress and Glovario locale values, provider destinations, and missing language packs. It warns when multiple multilingual providers are active or when the multilingual plugin's current language is not one of the two configured languages.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<p>First public release.<\/p>\n\n<ul>\n<li>Make variable and Insert variable in the block editor, the Classic Editor, Elementor, and Beaver Builder: turn selected text into a variable, with a category, a scheduled value, and a value for a second language, and replace the same text on your other pages after reviewing the list.<\/li>\n<li>Unlimited variables of type Text, Multiline text, URL, Email, Number, and Image (from the Media Library, with a size option), with categories, search, filters, and read-only built-in values such as the site name and the current year.<\/li>\n<li>Shortcodes, <code>{{glvr:key}}<\/code> tokens, the Site Variable block, titles and menus, and PHP functions. Titles and descriptions in Yoast SEO and Rank Math show the values too.<\/li>\n<li>Scheduled values and values for two languages, following Polylang, TranslatePress, or Weglot, or the built-in cookie-based language switcher.<\/li>\n<li>Usage Inspector, guided conversion of existing text, safe deletion with reference replacement, and JSON import and export.<\/li>\n<li>Value-only editing for editors and clients with the <code>glovario_edit_variable_values<\/code> capability.<\/li>\n<li>Translation-ready: the interface follows each user's WordPress language, with translations delivered through translate.wordpress.org.<\/li>\n<\/ul>","raw_excerpt":"Turn any text into reusable content: change a phone number or address once and it updates everywhere on your site, in two languages.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/386723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=386723"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/bottegawp"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=386723"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=386723"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=386723"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=386723"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=386723"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=386723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}