{"id":1896507,"date":"2019-10-18T13:19:18","date_gmt":"2019-10-18T17:19:18","guid":{"rendered":"https:\/\/theeventscalendar.com\/knowledgebase\/change-the-wording-of-any-bit-of-text-or-string-2\/"},"modified":"2026-04-23T16:22:53","modified_gmt":"2026-04-23T20:22:53","slug":"custom-wording","status":"publish","type":"post","link":"https:\/\/theeventscalendar.com\/knowledgebase\/custom-wording\/","title":{"rendered":"How to Change Wording in The Events Calendar"},"content":{"rendered":"\n<p>If you want to change a word or label on your calendar, you can do that using a snippet or a third-party plugin. This article outlines your options and you can pick the method that works best for you.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-change-text-with-a-snippet\">Change Text with a Snippet<\/h2>\n\n\n\n<p>The snippet here will help you change any piece of text in The Events Calendar and its add-ons. With a little bit of modification, it would even allow you to change the wording of any piece of text anywhere in WordPress, not just this plugin!<\/p>\n\n\n\n<p>Use the starter snippet below as a template, and copy it into your theme&#8217;s functions.php. You may need to remove the opening <strong>&lt;?php<\/strong> tag if your theme&#8217;s functions.php already has one.<\/p>\n\n\n\n<p>This snippet contains two example wording changes, which you can use as a template for the changes you want to make. This changes the phrase &#8220;Related Events&#8221; to &#8220;Similar Events&#8221; and &#8220;Venue&#8221; to &#8220;Location.&#8221; This is the magic bit right here:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n$custom_text = &#x5B;\n  &#039;Venue&#039; =&gt; &#039;Location&#039;,\n  &#039;Related %s&#039; =&gt; &#039;Similar %s&#039;,\n];\n<\/pre><\/div>\n\n\n<p>To change a particular set of text, you must first copy it exactly as it appears in the <em>code<\/em>. Frequently it appears the same on the front-end. For instance, to change the wording of &#8220;Related Events&#8221; to say &#8220;Similar Events&#8221;, you can simply copy the text from the front end. You will then paste it as a key inside of the $custom_text array inside of the snippet as in the above example. You can add as many lines as you want by following the same pattern.<\/p>\n\n\n\n<p>Sometimes the text you want to change cannot be copy-pasted from the front end. For instance, by default, the label in the Events Bar&nbsp;has&nbsp;a CSS&nbsp;style that transforms &lt;label&gt;s to all caps. If we copy-pasted&nbsp;&#8220;SEARCH&#8221; or &#8220;WEEK OF&#8221; they will not replace the text we want, because&nbsp;that is not how they appear in the code. If we inspect these elements we will see something like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: xml; title: ; notranslate\" title=\"\">\n&lt;label&gt;Search&lt;\/label&gt;\n<\/pre><\/div>\n\n\n<p>In order to change&nbsp;that label, we would have to copy it as it appears in the <em>code<\/em>, namely &#8220;Search&#8221;, not &#8220;SEARCH&#8221;. An example which changes &#8220;Search&#8221; to &#8220;Find&#8221;:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n$custom_text = &#x5B;\n  &#039;Related %s&#039; =&gt; &#039;Similar %s&#039;,\n  &#039;Search&#039; =&gt; &#039;Find&#039;, \n];\n<\/pre><\/div>\n\n\n<p>In the above examples, you may have been wondering what the <code>%s<\/code> is all about. Those are placeholders for words that the translation does not change. So `Related %s` allows you to change the word &#8220;Events&#8221; (in the settings), but is not responsible for translating it &#8211; it only translates the word &#8220;Related&#8221;.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:var(--global-palette8)\">\u26a0\ufe0f Note: On rare occasions, this can be even more complicated when multiple strings are concatenated together. An example would be a heading like &#8220;Events for the week of November 24, 2014.&#8221; When attempting to edit these it might become necessary to dive into the PHP code and determine how the individual strings appear in the code, and what their <code>gettext<\/code> <code>$text value<\/code> is.<\/p>\n\n\n\n<p>To help get more accurate translations, WordPress provides translations with context and translations for singular\/plural. These use slightly different filters to account for the extra information, and may not get caught by the <code>gettext<\/code> filter. Since we use these in some places, we have included examples addressing these in the code below as well.<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>The<\/strong> <strong>Starter Snippet<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php\n\n\/*\n * EXAMPLE OF CHANGING ANY TEXT (STRING) IN THE EVENTS CALENDAR\n * See the codex to learn more about WP text domains:\n * http:\/\/codex.wordpress.org\/Translating_WordPress#Localization_Technology\n * Example Tribe domains: &#039;tribe-events-calendar&#039;, &#039;tribe-events-calendar-pro&#039;...\n *\/\n\n\/**\n * Put your custom text here in a key =&gt; value pair\n * Example: &#039;Text you want to change&#039; =&gt; &#039;This is what it will be changed to&#039;.\n * The text you want to change is the key, and it is case-sensitive.\n * The text you want to change it to is the value.\n * You can freely add or remove key =&gt; values, but make sure to separate them with a comma.\n * This example changes the label &quot;Venue&quot; to &quot;Location&quot;, &quot;Related Events&quot; to &quot;Similar Events&quot;, and &quot;(Now or date) onwards&quot; to &quot;Calendar - you can discard the dynamic portion of the text as well if desired.\n*\/\nfunction tribe_replace_strings() {\n\t$custom_text = &#x5B;\n\t\t&#039;Venue&#039; =&gt; &#039;Location&#039;,\n\t\t&#039;Related %s&#039; =&gt; &#039;Similar %s&#039;,\n\t\t&#039;%s onwards&#039; =&gt; &#039;Calendar&#039;,\n\t];\n\n\treturn $custom_text;\n}\n\n\n\nfunction tribe_custom_theme_text ( $translation, $text, $domain ) {\n\t\/\/ If this text domain doesn&#039;t start with &quot;tribe-&quot;, &quot;the-events-&quot;, or &quot;event-&quot; bail.\n\tif ( ! check_if_tec_domains( $domain ) ) {\n\t\treturn $translation;\n\t}\n\n\t\/\/ String replacement.\n\t$custom_text = tribe_replace_strings();\n\n\t\/\/ If we don&#039;t have replacement text in our array, return the original (translated) text.\n\tif ( empty( $custom_text&#x5B;$translation] ) ) {\n\t\treturn $translation;\n\t}\n\n\treturn $custom_text&#x5B;$translation];\n}\n\n\n\nfunction tribe_custom_theme_text_plurals ( $translation, $single, $plural, $number, $domain ) {\n\t\/\/ If this text domain doesn&#039;t start with &quot;tribe-&quot;, &quot;the-events-&quot;, or &quot;event-&quot; bail.\n\tif ( ! check_if_tec_domains( $domain ) ) {\n\t\treturn $translation;\n\t}\n\n\t\/** If you want to use the number in your logic, this is where you&#039;d do it.\n\t * Make sure you return as part of this, so you don&#039;t call the function at the end and undo your changes!\n\t *\/\n\n\t\/\/ If we&#039;re not doing any logic up above, just make sure your desired changes are in the $custom_text array above (in the `tribe_custom_theme_text` filter. )\n\tif ( 1 === $number ) {\n\t\treturn tribe_custom_theme_text ( $translation, $single, $domain );\n\t} else {\n\t\treturn tribe_custom_theme_text ( $translation, $plural, $domain );\n\t}\n}\n\n\n\nfunction tribe_custom_theme_text_with_context ( $translation, $text, $context, $domain ) {\n\t\/\/ If this text domain doesn&#039;t start with &quot;tribe-&quot;, &quot;the-events-&quot;, or &quot;event-&quot; bail.\n\tif ( ! check_if_tec_domains( $domain ) ) {\n\t\treturn $translation;\n\t}\n\n\t\/** If you want to use the context in your logic, this is where you&#039;d do it.\n\t * Make sure you return as part of this, so you don&#039;t call the function at the end and undo your changes!\n\t * Example (here, we don&#039;t want to do anything when the context is &quot;edit&quot;, but if it&#039;s &quot;view&quot; we want to change it to &quot;Tribe&quot;):\n\t * if ( &#039;edit&#039; === strtolower( $context ) ) {\n\t *    return $translation;\n\t * } elseif( &#039;view&#039; === strtolower( $context ) ) {\n\t *    return &quot;Tribe&quot;;\n\t * }\n\t *\n\t * Feel free to use the same logic we use in tribe_custom_theme_text() above for key =&gt; value pairs for this logic.\n\t *\/\n\n\t\/\/ If we&#039;re not doing any logic up above, just make sure your desired changes are in the $custom_text array above (in the `tribe_custom_theme_text` filter. )\n\treturn tribe_custom_theme_text ( $translation, $text, $domain );\n}\n\n\n\nfunction tribe_custom_theme_text_plurals_with_context ( $translation, $single, $plural, $number, $context, $domain ) {\n\t\/\/ If this text domain doesn&#039;t start with &quot;tribe-&quot;, &quot;the-events-&quot;, or &quot;event-&quot; bail.\n\tif ( ! check_if_tec_domains( $domain ) ) {\n\t\treturn $translation;\n\t}\n\n\t\/**\n\t * If you want to use the context in your logic, this is where you&#039;d do it.\n\t * Make sure you return as part of this, so you don&#039;t call the function at the end and undo your changes!\n\t * Example (here, we don&#039;t want to do anything when the context is &quot;edit&quot;, but if it&#039;s &quot;view&quot; we want to change it to &quot;Tribe&quot;):\n\t * if ( &#039;edit&#039; === strtolower( $context ) ) {\n\t *    return $translation;\n\t * } elseif( &#039;view&#039; === strtolower( $context ) ) {\n\t *    return &quot;cat&quot;;\n\t * }\n\t *\n\t * You&#039;d do something as well here for singular\/plural. This could get complicated quickly if it has to interact with context as well.\n\t * Example:\n\t * if ( 1 === $number ) {\n\t *    return &quot;cat&quot;;\n\t * } else {\n\t *    return &quot;cats&quot;;\n\t * }\n\t * Feel free to use the same logic we use in tribe_custom_theme_text() above for key =&gt; value pairs for this logic.\n\t *\/\n\n\t\/\/ If we&#039;re not doing any logic up above, just make sure your desired changes are in the $custom_text array above (in the `tribe_custom_theme_text` filter. )\n\tif ( 1 === $number ) {\n\t\treturn tribe_custom_theme_text ( $translation, $single, $domain );\n\t} else {\n\t\treturn tribe_custom_theme_text ( $translation, $plural, $domain );\n\t}\n}\n\nfunction check_if_tec_domains( $domain ) {\n\t$is_tribe_domain = strpos( $domain, &#039;tribe-&#039; )      === 0;\n\t$is_tec_domain   = strpos( $domain, &#039;the-events-&#039; ) === 0;\n\t$is_event_domain = strpos( $domain, &#039;event-&#039; )      === 0;\n\n\t\/\/ If this text domain doesn&#039;t start with &quot;tribe-&quot;, &quot;the-events-&quot;, or &quot;event-&quot; bail.\n\tif ( ! $is_tribe_domain &amp;&amp; ! $is_tec_domain &amp;&amp; ! $is_event_domain ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n\/\/ Base.\nadd_filter( &#039;gettext&#039;, &#039;tribe_custom_theme_text&#039;, 20, 3 );\n\/\/ Plural-aware translations.\nadd_filter( &#039;ngettext&#039;, &#039;tribe_custom_theme_text_plurals&#039;, 20, 5 );\n\/\/ Translations with context.\nadd_filter( &#039;gettext_with_context&#039;, &#039;tribe_custom_theme_text_with_context&#039;, 20, 4 );\n\/\/ Plural-aware translations with context.\nadd_filter( &#039;ngettext_with_context&#039;, &#039;tribe_custom_theme_text_plurals_with_context&#039;, 20, 6 );\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-change-text-with-loco-translate\">Change Text with Loco Translate<\/h2>\n\n\n\n<p><a href=\"https:\/\/wordpress.org\/plugins\/loco-translate\/\">Loco Translate<\/a> is a popular WordPress plugin that provides in-browser editing of translation files. It allows you to translate themes and plugins directly from your WordPress admin area. While its primary function is translation, it can also be effectively used to override existing text strings, even if you&#8217;re not changing the language.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Install Loco Translate<\/li>\n\n\n\n<li>Go to Loco Translate &gt; Plugins and find The Events Calendar (or any other add-on you wish to modify, e.g., Events Calendar Pro)<\/li>\n\n\n\n<li>You&#8217;ll need to create a custom language file to store your overrides. This ensures your changes are not lost during plugin updates.\n<ul class=\"wp-block-list\">\n<li>Click on New language.<\/li>\n\n\n\n<li>Select your site&#8217;s default language (e.g., English (United States) \u2014 en_US). If you need to customize the text of an existing translation, then, you don&#8217;t need to create a new language. In this case, you can click to edit the existing language instead.<\/li>\n\n\n\n<li>Choose a location for your new language file. Always select Custom or System. If you choose the Author option, your changes will be overwritten during updates. We recommend using the \u201cSystem\u201d option. This saves your work in a&nbsp;\/languages&nbsp;folder that is safe from updates.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Click the Start translating button.<br><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/09\/teckb-970-01-1024x574.png\" alt=\"This image has an empty alt attribute; its file name is teckb-970-01-1024x574.png\"><br><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/09\/teckb-970-02-1024x569.png\" alt=\"\"><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>In the &#8220;Filter translations&#8221; search box, type the exact text string you want to change (e.g., &#8220;Event Details&#8221;, &#8220;Related Events&#8221;). Loco Translate will show you any matching strings.<\/li>\n\n\n\n<li>Select the original string from the &#8220;Source text&#8221; column. In the &#8220;Translation&#8221; text area below, enter your desired custom text.<\/li>\n\n\n\n<li>Click the Save button to apply your changes. Clear any website caching you may have (e.g., from a caching plugin or your hosting provider) to see the changes immediately.<\/li>\n<\/ol>\n\n\n\n<p><strong>Troubleshooting Loco Translate<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Changes not appearing:<\/strong> Ensure you&#8217;ve cleared your website cache. Double-check that you&#8217;ve selected a custom location for your language file.<\/li>\n\n\n\n<li><strong>String not found:<\/strong> The string might be part of a different Events Calendar add-on. Go back to <strong>Loco Translate &gt; Plugins<\/strong> and select the appropriate plugin. The string might also be dynamically generated and not directly translatable this way, in which case <strong>Say What<\/strong> might be a better option.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-change-text-with-say-what\">Change Text with Say What<\/h2>\n\n\n\n<p><a href=\"https:\/\/wordpress.org\/plugins\/say-what\/\">Say What<\/a> is another useful WordPress plugin designed specifically for text string overrides. It provides a simple interface to change any text string output by a WordPress theme or plugin without creating or modifying translation files. This makes it a straightforward solution for quick, targeted text changes.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Install and activate Say What<\/li>\n\n\n\n<li>Go to Tools &gt; Text changes and click Add New<\/li>\n\n\n\n<li>In the &#8220;Original string&#8221; field, enter the <strong>exact text<\/strong> you want to change. This is case-sensitive and must match perfectly.<\/li>\n\n\n\n<li>In the &#8220;Text domain&#8221; field, enter <strong>the-events-calendar<\/strong>. If you are modifying an add-on, you&#8217;ll need to find its specific text domain. You can often find this by looking at the plugin&#8217;s main file (e.g., <strong>the-events-calendar\/the-events-calendar.php<\/strong>) and searching for <strong>Text Domain<\/strong> in the plugin header information.<\/li>\n\n\n\n<li>In the &#8220;Replacement string&#8221; field, enter your desired custom text.<\/li>\n\n\n\n<li>Click the <strong>Add<\/strong> button to save your override. Clear any website caching you may have to see the changes immediately.<\/li>\n<\/ol>\n\n\n\n<p class=\"has-theme-palette-8-background-color has-background\"><strong>Note:<\/strong> Some string texts are dynamically generated. For example, you will notice in some situations, in order to override the text <strong>&#8216;Find Events&#8217;<\/strong> you will need to search for the <strong>&#8216;Find %s&#8217;<\/strong> string. It happens, because the <strong>%s<\/strong> placeholder is set to match the event post type labels defined in code.<\/p>\n\n\n\n<p><strong>Troubleshooting Say What <\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Changes not appearing:<\/strong> Clear your website cache. Ensure the &#8220;Original string&#8221; exactly matches the text in the plugin (case-sensitive).<\/li>\n\n\n\n<li><strong>Incorrect text domain:<\/strong> If the text domain is wrong, Say What won&#8217;t find the string. Double-check the text domain for the specific plugin you&#8217;re trying to modify.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-changing-the-term-events\">Changing the term \u201cEvents\u201d<\/h2>\n\n\n\n<p>Whether you&#8217;re building a custom template, running a niche site (like &#8220;Classes&#8221; or &#8220;Workshops&#8221;), or simply need a better translation, you can swap out the default &#8220;Event&#8221; and &#8220;Events&#8221; terminology.<\/p>\n\n\n\n<p>There are several ways to update these terms across your entire site to better match your brand.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-change-the-term-events-using-filters\">Change the Term \u201cEvents\u201d Using Filters<\/h3>\n\n\n\n<p>First, to get the existing terms we have four functions in The Events Calendar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>tribe_get_event_label_singular<\/code><\/li>\n\n\n\n<li><code>tribe_get_event_label_singular_lowercase<\/code><\/li>\n\n\n\n<li><code>tribe_get_event_label_plural and<\/code><\/li>\n\n\n\n<li><code>tribe_get_event_label_plural_lowercase<\/code><\/li>\n<\/ul>\n\n\n\n<p>Notice we have separate ones for plurals (\u201cevents\u201d vs. \u201cevent\u201d) and for lowercase (\u201cEvent\u201d vs \u201cevent\u201d). This makes it easier for folks to use them in the correct context \u2013 for example, in a title we\u2019d use&nbsp;<code>tribe_get_event_label_singular<\/code>&nbsp;or&nbsp;<code>tribe_get_event_label_plural<\/code>&nbsp;as titles (in English and other languages) are typically capitalized, whereas in a content block, we\u2019d use&nbsp;<code>tribe_get_event_label_singular_lowercase<\/code>&nbsp;or&nbsp;<code>tribe_get_event_label_plural_lowercase<\/code>.<\/p>\n\n\n\n<p>Knowing that context helps translators (and folks like you!) choose the correct word, and in some instances alter the capitalization (in German for example, \u201cEvent\u201d as a noun is always capitalized).<\/p>\n\n\n\n<p>But what if you don\u2019t want to use \u201cevent\u201d \u2013 what if you want to use \u201cconcert\u201d?<\/p>\n\n\n\n<p>Well, each of those functions has a filter in it.&nbsp;<a href=\"https:\/\/developer.wordpress.org\/plugins\/hooks\/filters\/\" target=\"_blank\" rel=\"noreferrer noopener\">WordPress<\/a>&nbsp;filters allow you to change data before it is used \u2013 in this case, the strings for the event terms. As you might expect, since there are four functions, there are four filters. We tried to make them easy to remember \u2013 they are the functions\u2019 names, without the \u201cget\u201d:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>tribe_event_label_singular<\/code><\/li>\n\n\n\n<li><code>tribe_event_label_singular_lowercase<\/code><\/li>\n\n\n\n<li><code>tribe_event_label_plural and<\/code><\/li>\n\n\n\n<li><code>tribe_event_label_plural_lowercase<\/code><\/li>\n<\/ul>\n\n\n\n<p>Remember we mentioned translation patching above? One caveat of these filters is they are applied&nbsp;<em>after the word has been translated<\/em>&nbsp;\u2013 so if you have a non-English site, using them will override the translation.<\/p>\n\n\n\n<p>As an example, (our site is in German) here\u2019s our calendar search bar:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"115\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-32-1024x115.png\" alt=\"\" class=\"wp-image-1969498\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-32-1024x115.png 1024w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-32-300x34.png 300w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-32-768x86.png 768w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-32-1536x173.png 1536w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-32.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Now we filter the \u201cevent\u201d terms to use \u201cconcert\u201d instead (specifically, we\u2019re filtering&nbsp;<code>tribe_event_label_plural<\/code>&nbsp;to use \u201cConcerts\u201d):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"108\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-33-1024x108.png\" alt=\"\" class=\"wp-image-1969499\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-33-1024x108.png 1024w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-33-300x32.png 300w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-33-768x81.png 768w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-33-1536x161.png 1536w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/image-33.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The term is applied after the translations, so \u201cFinde\u201d (\u201cFind\u201d, in English) stays translated, but \u201cConcerts\u201d does not get translated. This could be an issue on some sites, so test it carefully, but that also means you can tweak the translation of the word if you feel it\u2019s incorrect!<\/p>\n\n\n\n<p>To utilize one of these filters is fairly easy. You\u2019ll want to add some code to your theme\u2019s functions.php file.<\/p>\n\n\n\n<p>So, continuing our \u201cconcerts\u201d example, to change all instances of the words from event\/events to concert\/concerts we\u2019d put the following in our file:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( 'tribe_event_label_singular', function() { return 'Concert'; } );\nadd_filter( 'tribe_event_label_singular_lowercase', function() { return 'concert'; } );\nadd_filter( 'tribe_event_label_plural', function() { return 'Concerts'; } );\nadd_filter( 'tribe_event_label_plural_lowercase', function() { return 'concerts'; } );\n\n<\/pre><\/div>\n\n\n<p>And then we\u2019ll see this:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/theeventscalendar.com\/knowledgebase\/wp-content\/uploads\/2020\/08\/concerts-1024x126.png\" alt=\"changing the term events\" class=\"wp-image-1947993\"\/><\/figure>\n\n\n\n<p>It\u2019s also worth mentioning that all of our other plugins respect these filters, so if you are using Filter Bar you\u2019ll see this:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/theeventscalendar.com\/knowledgebase\/wp-content\/uploads\/2020\/08\/filterbar_concerts-575x1024.png\" alt=\"changing the term events affects filter bar as well\" class=\"wp-image-1947994\"\/><\/figure>\n\n\n\n<p>You can also manually change the names of Filter Bar filters by going to Events &gt; Settings &gt; Filters and then opening the one you want to change in the Active Filters list.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-changing-the-calendar-s-url-slugs\">Changing the Calendar\u2019s URL Slugs<\/h3>\n\n\n\n<p>The event slugs for your calendar\u2019s URLs are controlled via settings at Events &gt; Settings &gt; General &gt; Viewing. The URLs will always use the slugs defined there, even if you are using a different language for your site. If you are using a different language for your site or you want to use a different word (e.g. \u201cconcerts\u201d), you\u2019ll want to adjust the slug settings.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-changing-the-terms-ticket-and-rsvp\">Changing the Terms \u201cTicket\u201d and \u201cRSVP\u201d<\/h2>\n\n\n\n<p>By default, The Events Calendar and Event Tickets plugins use the terms \u201cTicket\u201d and \u201cRSVP.\u201d While these are suitable for most scenarios, you may find that other terms better fit the unique needs of your site. This article will show you how to change the default \u201cTicket\u201d and \u201cRSVP\u201d labels everywhere on your site.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-change-the-terms-ticket-and-rsvp-using-filters\"><a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/change-the-wording-of-any-bit-of-text-or-string\/#h-change-the-term-events-using-filters\">Change the Terms \u201cTicket\u201d and \u201cRSVP\u201d<\/a> <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/change-the-wording-of-any-bit-of-text-or-string\/#h-change-the-term-events-using-filters\">Using Filters<\/a><\/h3>\n\n\n\n<p>The Event Tickets plugin uses a set of filters to dynamically generate the labels for \u201cTicket\u201d and \u201cRSVP.\u201d The names of these filters are self-explanatory, making it easy to understand their function.<\/p>\n\n\n\n<p>Here are the four filters available for&nbsp;<strong>Tickets<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>tribe_get_ticket_label_singular<\/code><\/li>\n\n\n\n<li><code>tribe_get_ticket_label_singular_lowercase<\/code><\/li>\n\n\n\n<li><code>tribe_get_ticket_label_plural<\/code><\/li>\n\n\n\n<li><code>tribe_get_ticket_label_plural_lowercase<\/code><\/li>\n<\/ul>\n\n\n\n<p>You can apply the same logic to RSVPs by replacing&nbsp;<code>ticket<\/code>&nbsp;with&nbsp;<code>rsvp<\/code>&nbsp;in the filter names.<\/p>\n\n\n\n<p>Remember that these filters are applied after the word has been translated. So if you are on a non-English site, using them will override the translation.<\/p>\n\n\n\n<p><strong>Snippet for Tickets<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/\/ Change the singular label from 'Ticket' to a custom term.\n \nadd_filter( 'tribe_get_ticket_label_singular', function() {\n    return 'Your Label'; \/\/ Change this to your desired singular term (e.g., 'Seat').\n} );\n \n\/\/ Change the lowercase singular label from 'ticket' to a custom term.\n \nadd_filter( 'tribe_get_ticket_label_singular_lowercase', function() {\n    return 'your label'; \/\/ Change this to your desired lowercase singular term.\n} );\n \n\/\/ Change the plural label from 'Tickets' to a custom term.\n \n \nadd_filter( 'tribe_get_ticket_label_plural', function() {\n    return 'Your Labels'; \/\/ Change this to your desired plural term (e.g., 'Seats').\n} );\n \n\/\/ Change the lowercase plural label from 'tickets' to a custom term.\n \nadd_filter( 'tribe_get_ticket_label_plural_lowercase', function() {\n    return 'your labels'; \/\/ Change this to your desired lowercase plural term.\n} );\n<\/pre><\/div>\n\n\n<p><strong>Snippet for RSVPs<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/\/ Change the singular RSVP label from 'RSVP' to a custom term.\n \nadd_filter( 'tribe_get_rsvp_label_singular', function() {\n    return 'Your Label'; \/\/ Change this to your desired singular term (e.g., 'Registration').\n} );\n \n\/\/ Change the lowercase singular RSVP label from 'rsvp' to a custom term.\n \nadd_filter( 'tribe_get_rsvp_label_singular_lowercase', function() {\n    return 'your label'; \/\/ Change this to your desired lowercase singular term.\n} );\n \n\/\/ Change the plural RSVP label from 'RSVPs' to a custom term.\n \nadd_filter( 'tribe_get_rsvp_label_plural', function() {\n    return 'Your Labels'; \/\/ Change this to your desired plural term (e.g., 'Registrations').\n} );\n \n\/\/ Change the lowercase plural RSVP label from 'rsvps' to a custom term.\n \nadd_filter( 'tribe_get_rsvp_label_plural_lowercase', function() {\n    return 'your labels'; \/\/ Change this to your desired lowercase plural term.\n} );\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-changing-the-terms-for-virtual-and-hybrid-events\">Changing the Terms for Virtual and Hybrid Events<\/h2>\n\n\n\n<p>Looking to change the wording of \u201cvirtual events\u201d or \u201chybrid events\u201d to something else? You can totally do that by adding a filter that will suit your needs. Read on to find out more.<\/p>\n\n\n\n<p>We have a bunch of new template tags that allow us to change any part of the virtual events label:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>tribe_get_virtual_label<\/code>: This will change the term \u201cVirtual\u201d<\/li>\n\n\n\n<li><code>tribe_get_virtual_lowercase<\/code>: This will change the term \u201cvirtual\u201d<\/li>\n\n\n\n<li><code>tribe_get_virtual_event_label_singular<\/code>: This will change the term \u201cVirtual Event\u201d<\/li>\n\n\n\n<li><code>tribe_get_virtual_event_label_singular_lowercase<\/code>: This will change the term \u201cvirtual event\u201d<\/li>\n\n\n\n<li><code>tribe_get_virtual_event_label_plural<\/code>: This will change the term \u201cVirtual Events\u201d<\/li>\n\n\n\n<li><code>tribe_get_virtual_event_label_plural_lowercase<\/code>: This will change the term \u201cvirtual events\u201d<\/li>\n\n\n\n<li><code>tribe_hybrid_label<\/code>: This will change the term \u201chybrid\u201d<\/li>\n\n\n\n<li><code>tribe_hybrid_label_singular<\/code>: This will change the term \u201cHybrid Event\u201d<\/li>\n<\/ul>\n\n\n\n<p>Inside each of those template tags is a filter by a similar name, so we\u2019ll want to know which of these we\u2019d like to change. In most cases, we\u2019ll want to change all of them so that the verbiage stays consistent across all of our virtual events.<\/p>\n\n\n\n<p>We can also change the global \u201cevents\u201d term, so a combination of filters can work here as well if we\u2019d like the term \u201cevents\u201d to be different everywhere on our site. We have an article about that here:&nbsp;<a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/k\/changing-the-term-events\/\" target=\"_blank\" rel=\"noreferrer noopener\">Changing the term \u201cEvent(s)\u201d<\/a>. But the important part is that&nbsp;<em>if you use those filters to change the global event(s) term then the terms will change here as well \u2013 automatically.<\/em><\/p>\n\n\n\n<p>So if we set \u201cEvent\u201d via the filter&nbsp;<code>tribe_event_label_singular<\/code>&nbsp;to \u201cWebinar\u201d that will propagate to the function&nbsp;<code>tribe_get_virtual_event_label_singular<\/code>&nbsp;which will return \u201cVirtual Webinar\u201d. The similarity in naming is intentional to help us associate them.<\/p>\n\n\n\n<p>It\u2019s also worth mentioning that the same caveats about translations from that article apply to these filters as well! The filters are applied&nbsp;<strong>after<\/strong>&nbsp;translation!<\/p>\n\n\n\n<p>As a first example, to alter the capitalized version of the \u201cVirtual\u201d term add the following to our theme\u2019s functions.php file:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( 'tribe_virtual_label', function(){ return 'Online'} ); \n<\/pre><\/div>\n\n\n<p>To alter the lowercase version of the \u201cvirtual\u201d term, add this to our theme functions.php:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( 'tribe_virtual_label_lowercase', function() { return 'online'} ); \n<\/pre><\/div>\n\n\n<p>Note that these snippets also change the phrase \u201cvirtual events\u201d to \u201conline events\u201d and \u201cVirtual Events\u201d to \u201cOnline Events\u201d.<\/p>\n\n\n\n<p>But let\u2019s say we want to change the term \u201cVirtual Event\u201d to \u201cWebinar\u201d (dropping the \u201cevent\u201d term). Use&nbsp;<code>tribe_virtual_event_label_singular<\/code>&nbsp;and it will override \u201cVirtual Event\u201d to \u201cWebinars\u201d.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( 'tribe_virtual_event_label_singular', function(){ return 'Webinars'} );\n<\/pre><\/div>\n\n\n<p>It\u2019s worth mentioning that these only change the&nbsp;<em>front-end<\/em>&nbsp;usage of these terms \u2013 for some clarity we decided to limit changing the term in the admin.<\/p>\n\n\n\n<p>So, as a recap:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/\/ This will change all uses of the word \"Virtual\" to \"Online.\n\/\/ It will also change all uses of the term \"Virtual Events\" to \"Online Events\".\nadd_filter( 'tribe_virtual_label', function() { return 'Online'; } );\n \n\/\/ This will change all uses of the word \"virtual\" to \"online.\n\/\/ It will also change all uses of the term \"virtual events\" to \"online events\".\nadd_filter( 'tribe_virtual_label_lowercase', function() { return 'online'; } );\n \n\/\/ This will change all uses of the term \"Virtual Event\" to \"Webinar\".\nadd_filter( 'tribe_virtual_event_label_singular', function() { return 'Webinar'; } );\n \n\/\/ This will change all uses of the term \"virtual event\" to \"webinar\".\nadd_filter( 'tribe_virtual_event_label_singular_lowercase', function() { return 'webinar'; } );\n \n\/\/ This will change all uses of the term \"Virtual Events\" to \"Webinars\".\nadd_filter( 'tribe_virtual_event_label_plural', function() { return 'Webinars'; } );\n \n\/\/ This will change all uses of the term \"virtual events\" to \"webinars\".\nadd_filter( 'tribe_virtual_event_label_plural_lowercase', function() { return 'webinars'; } );\n\n<\/pre><\/div>\n\n\n<p>One last one for funsies:<\/p>\n\n\n\n<p>What if we want to change the event term \u2013 but only for virtual events (getting a bit sneaky here!) and we don\u2019t want to change the \u201cvirtual\u201d term? (we\u2019ve broken up the code a bit so you can see what we\u2019re doing a bit better)<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/\/ This will change all uses of the term \"Virtual Event\" to \"Virtual Classroom\".\nadd_filter(\n    'tribe_virtual_event_label_singular',\n    function() {\n        return tribe_get_virtual_label() . 'Classroom';\n    }\n);\n \n\/\/ This will change all uses of the term \"virtual event\" to \"virtual classroom\".\nadd_filter(\n    'tribe_virtual_event_label_singular_lowercase',\n    function() {\n        return tribe_get_virtual_label_lowercase() . 'classroom';\n    }\n);\n \n\/\/ This will change all uses of the term \"Virtual Events\" to \"Virtual Classrooms\".\nadd_filter(\n    'tribe_virtual_event_label_plural',\n    function() {\n        return tribe_get_virtual_label() . 'Classrooms';\n    }\n);\n \n\/\/ This will change all uses of the term \"virtual events\" to \"virtual classrooms\".\nadd_filter(\n    'tribe_virtual_event_label_plural_lowercase',\n    function() {\n        return tribe_get_virtual_label_lowercase() . 'classrooms';\n    }\n);\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-customize-the-postponed-event-status-label\"><strong>Customize the &#8220;Postponed&#8221; Event Status Label<\/strong><\/h2>\n\n\n\n<p>Use this tweak to rename the default &#8220;Postponed&#8221; status label shown on events.<\/p>\n\n\n\n<p><strong>What it does:<\/strong> Replaces the &#8220;Postponed&#8221; label with a custom label of your choice.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( 'tec_event_status_postponed_label', function() { return 'Rescheduled'; } );\n<\/pre><\/div>\n\n\n<p><strong>Result:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"227\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-02-at-00.43.00-1024x227.jpg\" alt=\"\" class=\"wp-image-1965858\" style=\"width:609px;height:auto\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-02-at-00.43.00-1024x227.jpg 1024w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-02-at-00.43.00-300x67.jpg 300w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-02-at-00.43.00-768x171.jpg 768w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-02-at-00.43.00.jpg 1058w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Ref:<\/strong> <a href=\"https:\/\/docs.theeventscalendar.com\/reference\/hooks\/tec_event_status_postponed_label\/\" target=\"_blank\" rel=\"noreferrer noopener\">tec_event_status_postponed_label<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you want to change a word or label on your calendar, you can do that using a snippet or a third-party plugin. This article outlines your options and you can pick the method that works best for you. Change Text with a Snippet The snippet here will help you change any piece of text&#8230;<\/p>\n","protected":false},"author":84,"featured_media":1955565,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_swpsp_post_exclude":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"ep_exclude_from_search":false,"footnotes":""},"categories":[24,347,59],"tags":[20,25,58,92],"stellar-product-taxonomy":[161],"class_list":["post-1896507","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-customizing","category-how-to","category-php","tag-code","tag-customizations","tag-php","tag-translations","stellar-product-taxonomy-the-events-calendar"],"acf":[],"taxonomy_info":{"category":[{"value":24,"label":"Customizing"},{"value":347,"label":"How To"},{"value":59,"label":"PHP"}],"post_tag":[{"value":20,"label":"Code"},{"value":25,"label":"Customizations"},{"value":58,"label":"PHP"},{"value":92,"label":"Translations"}],"stellar-product-taxonomy":[{"value":161,"label":"The Events Calendar"}]},"featured_image_src_large":["https:\/\/images.theeventscalendar.com\/kb\/uploads\/2023\/02\/social-share-1024x538.png",1024,538,true],"author_info":{"display_name":"The Events Calendar Team","author_link":"https:\/\/theeventscalendar.com\/knowledgebase\/author\/the_events_calendar_team\/"},"comment_info":0,"category_info":[{"term_id":24,"name":"Customizing","slug":"customizing","term_group":0,"term_taxonomy_id":24,"taxonomy":"category","description":"","parent":0,"count":67,"filter":"raw","term_order":"0","cat_ID":24,"category_count":67,"category_description":"","cat_name":"Customizing","category_nicename":"customizing","category_parent":0},{"term_id":347,"name":"How To","slug":"how-to","term_group":0,"term_taxonomy_id":347,"taxonomy":"category","description":"","parent":0,"count":109,"filter":"raw","term_order":"0","cat_ID":347,"category_count":109,"category_description":"","cat_name":"How To","category_nicename":"how-to","category_parent":0},{"term_id":59,"name":"PHP","slug":"php","term_group":0,"term_taxonomy_id":59,"taxonomy":"category","description":"","parent":24,"count":52,"filter":"raw","term_order":"0","cat_ID":59,"category_count":52,"category_description":"","cat_name":"PHP","category_nicename":"php","category_parent":24}],"tag_info":[{"term_id":20,"name":"Code","slug":"code","term_group":0,"term_taxonomy_id":20,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw","term_order":"0"},{"term_id":25,"name":"Customizations","slug":"customizations","term_group":0,"term_taxonomy_id":25,"taxonomy":"post_tag","description":"","parent":0,"count":31,"filter":"raw","term_order":"0"},{"term_id":58,"name":"PHP","slug":"php","term_group":0,"term_taxonomy_id":58,"taxonomy":"post_tag","description":"","parent":20,"count":22,"filter":"raw","term_order":"0"},{"term_id":92,"name":"Translations","slug":"translations","term_group":0,"term_taxonomy_id":92,"taxonomy":"post_tag","description":"","parent":0,"count":5,"filter":"raw","term_order":"0"}],"_links":{"self":[{"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1896507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/users\/84"}],"replies":[{"embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/comments?post=1896507"}],"version-history":[{"count":8,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1896507\/revisions"}],"predecessor-version":[{"id":1969973,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1896507\/revisions\/1969973"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/media\/1955565"}],"wp:attachment":[{"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/media?parent=1896507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/categories?post=1896507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/tags?post=1896507"},{"taxonomy":"stellar-product-taxonomy","embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/stellar-product-taxonomy?post=1896507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}