{"id":1946043,"date":"2020-02-21T11:17:07","date_gmt":"2020-02-21T16:17:07","guid":{"rendered":"https:\/\/theeventscalendar.com\/knowledgebase\/?post_type=tribe-knowledgebase&#038;p=1946043"},"modified":"2026-04-23T13:57:34","modified_gmt":"2026-04-23T17:57:34","slug":"customize-calendar-views","status":"publish","type":"post","link":"https:\/\/theeventscalendar.com\/knowledgebase\/customize-calendar-views\/","title":{"rendered":"Customizing The Events Calendar Views"},"content":{"rendered":"\n<p>The Events Calendar&#8217;s calendar views \u2014 Month, List, Day, and the additional views available with <a href=\"https:\/\/theeventscalendar.com\/products\/events-calendar-pro\/\">Events Calendar Pro<\/a> \u2014 share a common set of customization options that apply across all views. This article covers those general customizations: how many events appear, what displays in the header, how the page title is output, and more.<\/p>\n\n\n\n<p>For customizations specific to a particular view, see the individual view articles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/customizing-month-view\/\">Customizing Month View<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/customizing-list-view\/\">Customizing List View<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/customizing-day-view\/\">Customizing Day View<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/customizing-week-view\/\">Customizing Week View<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/customizing-photo-view\/\">Customizing Photo V<\/a><a href=\"#\">iew<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/customizing-map-view\/\">Customizing Map View<\/a><\/li>\n<\/ul>\n\n\n\n<p>For styling and color changes that don&#8217;t require code \u2014 such as accent colors, font choices, and button styles \u2014 see <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/wordpress-customizer-tec\/\">Customizing The Events Calendar with the WordPress Customizer<\/a>.<\/p>\n\n\n\n<p>Customizations for The Events Calendar are usually implemented via code snippets or template overrides. Add snippets to your child theme&#8217;s <code>functions.php<\/code> file or use the Code Snippets plugin. Template overrides should go in a child theme. If either approach is new to you, start with <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/best-practices-for-implementing-custom-code-snippets\/\">Using Code Snippets to Customize The Events Calendar<\/a> and <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/customizing-template-files\/\">Customizing The Events Calendar Templates<\/a> for a walkthrough of each.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-number-of-events-displayed\">Number of Events Displayed<\/h2>\n\n\n\n<p>The number of events shown in calendar views is controlled by two settings at <strong>Events \u2192 Settings \u2192 Display \u2192 Calendar Display<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/10\/backend-settings.png\" alt=\"The Calendar Display settings showing the Month view events per day and Number of events to show per page fields\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Month view events per day<\/strong> \u2014 controls the maximum number of events listed per day cell in Month View. The default is 3. Use <code>-1<\/code> to show all events. Note that all-day and multi-day events are not counted toward this limit, so the actual number of items visible in a cell may be higher.<\/li>\n\n\n\n<li><strong>Number of events to show per page<\/strong> \u2014 controls the number of events per page in List, Photo, and Map views. Day View always shows all events on the given day regardless of this setting.<\/li>\n<\/ul>\n\n\n\n<p>Because events come in different forms \u2014 single, recurring, all-day, multi-day \u2014 the displayed count doesn&#8217;t always match the setting exactly. Here&#8217;s how each view handles it:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-month-view\">Month View<\/h4>\n\n\n\n<p>Month View honours the events-per-day setting, but all-day and multi-day events are displayed in addition to that count rather than within it.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/10\/month-per-dau.png\" alt=\"Month View settings showing the events per day field\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/10\/month-view-per-day-1024x198.png\" alt=\"Month View showing events per day with all-day events displayed above the limit\"\/><\/figure>\n\n\n\n<p>If you want all-day and multi-day events to count toward the per-day limit, that requires <a href=\"https:\/\/andrasguseo.com\/gist\/include-all-events-in-the-month-view-events-per-day-setting\/\">a template customization<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-summary-view\">Summary View<\/h4>\n\n\n\n<p>In Summary View, multi-day events appear on each day they span. In the page&#8217;s total event count, each multi-day event counts as one event regardless of how many days it occupies.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/10\/5-events-per-page-1024x346.png\" alt=\"Summary View showing 5 events per page with a multi-day event spanning multiple rows\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-list-photo-and-map-views\">List, Photo, and Map Views<\/h4>\n\n\n\n<p>In these views every event counts as one toward the per-page total, regardless of type. Single, recurring, all-day, and multi-day events all count equally.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-when-the-setting-doesn-t-take-effect\">When the Setting Doesn&#8217;t Take Effect<\/h4>\n\n\n\n<p>If changing the events-per-page setting has no effect, your theme may be overriding it via its own archive posts-per-page setting. You can work around this with a snippet. Add the following to your child theme&#8217;s <code>functions.php<\/code> or via the <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/best-practices-for-implementing-custom-code-snippets\/\">Code Snippets<\/a> plugin, changing the number to your desired value:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nadd_filter(\n    &#039;tribe_events_views_v2_view_latest-past_repository_args&#039;,\n    function( $args, $context, $view ) {\n        $args&#x5B;&#039;posts_per_page&#039;] = 10; \/\/ Change to your desired number\n        return $args;\n    }\n);\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-controlling-events-in-the-latest-past-events-section\">Controlling Events in the Latest Past Events Section<\/h4>\n\n\n\n<p>When there are no upcoming events, The Events Calendar can display a &#8220;Latest Past Events&#8221; section. By default it shows 3 events. To change that number:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_context_latest_past_per_page&#039;, function( $value ) {\n    return 10; \/\/ Change to your desired number\n} );\n<\/pre><\/div>\n\n\n<p>To match the Latest Past Events count to your main list view setting:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_context_latest_past_per_page&#039;, function( $value ) {\n    return tribe_get_option( &#039;postsPerPage&#039;, 3 );\n} );\n\nadd_filter(\n    &#039;tribe_events_views_v2_view_prev_url&#039;,\n    function( $url, $canonical, $view ) {\n        $parsed_url = wp_parse_url( $url );\n\n        if ( empty( $parsed_url&#x5B;&#039;query&#039;] ) || false === strpos( &#039;eventDisplay=past&#039;, $parsed_url&#x5B;&#039;query&#039;] ) ) {\n            return $url;\n        }\n\n        if ( ! empty( $parsed_url&#x5B;&#039;path&#039;] ) &amp;amp;&amp;amp; false !== strpos( &#039;page&#039;, $parsed_url&#x5B;&#039;path&#039;] ) ) {\n            return $url;\n        }\n\n        return add_query_arg( &#039;paged&#039;, &#039;2&#039;, $url );\n    },\n    10,\n    3\n);\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-customizing-the-title-for-your-events-page-when-added-to-homescreen\">Customizing the Title for Your Events Page When Added to Homescreen<\/h2>\n\n\n\n<p>When users save your Events Calendar page to their mobile homescreen, the default title\u2014like&nbsp;<em>\u201cEvents from April 1 \u2013 April 30 \u2013 Join us!\u201d<\/em>\u2014is auto-generated based on the calendar\u2019s current date range. While informative, this title may not align with your brand or message and can appear unnecessarily long or inconsistent.<\/p>\n\n\n\n<p>Using the snippet below gives you full control over how it appears in browser tabs, mobile shortcuts, and even social previews.<\/p>\n\n\n\n<p>Add the following to your child theme\u2019s&nbsp;<code>functions.php<\/code>&nbsp;or via the&nbsp;<a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/best-practices-for-implementing-custom-code-snippets\/\">Code Snippets<\/a>&nbsp;plugin.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_get_events_title&#039;, function( $title ) {\n    if ( tribe_is_month() || tribe_is_past() || tribe_is_upcoming() ) {\n        return &#039;Events \u2013 Join us!&#039;;\n    }\n    return $title;\n});\n<\/pre><\/div>\n\n\n<p>The&nbsp;<code>tribe_get_events_title<\/code>&nbsp;filter lets us intercept and customize the default title generated by The Events Calendar. The snippet above checks if the view is&nbsp;<strong>month<\/strong>,&nbsp;<strong>past<\/strong>, or&nbsp;<strong>upcoming<\/strong>, and then replaces the title accordingly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-removing-the-site-name-from-the-title\">Removing the Site Name from the Title<\/h3>\n\n\n\n<p>If your site\u2019s name is still showing in the title (e.g.,&nbsp;<em>\u201cEvents \u2013 Join us! \u2013 MySiteName\u201d<\/em>), it\u2019s likely being appended by your theme or SEO plugin. To remove it, add this code below the previous snippet:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;document_title_parts&#039;, function( $title ) {\n    if ( function_exists( &#039;tribe_is_event_query&#039; ) &amp;&amp; tribe_is_event_query() ) {\n        unset( $title&#x5B;&#039;site&#039;] ); \/\/ Removes site name\n    }\n    return $title;\n});\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-hiding-and-excluding-events-from-calendar-views\">Hiding and Excluding Events from Calendar Views<\/h2>\n\n\n\n<p>By default, all published events appear across every calendar view. The snippets in this section let you control which events are visible on the frontend based on various criteria. Note that hiding an event from calendar views does not affect its individual event page, which remains accessible via its direct URL.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-hiding-events-that-have-already-started\">Hiding Events That Have Already Started<\/h3>\n\n\n\n<p>By default, calendar views show ongoing events even after their start time has passed, as long as they haven&#8217;t ended yet. If you&#8217;d prefer to only show truly upcoming events, hiding anything that has already started, use the snippet in this section.<\/p>\n\n\n\n<p>It hooks into <code>tribe_repository_events_pre_get_posts<\/code> to modify the main frontend event query. It uses your site&#8217;s configured WordPress timezone.<\/p>\n\n\n\n<p>Add this to your child theme&#8217;s <code>functions.php<\/code> or via the Code Snippets plugin.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php \/\/Do not copy this line\n\nadd_action( &#039;tribe_repository_events_pre_get_posts&#039;, function ( $query ) {\n\t\/\/ Only modify the main frontend query\n\tif ( is_admin() || ! $query-&gt;is_main_query() ) {\n\t\treturn;\n\t}\n\n\t\/\/ Use site&#039;s timezone safely\n\t$timezone = wp_timezone();\n\t$now      = new DateTime( &#039;now&#039;, $timezone );\n\t$today    = $now-&gt;format( &#039;Y-m-d H:i:s&#039; );\n\n\t\/\/ Exclude events that have already started\n\t$meta_query   = (array) $query-&gt;get( &#039;meta_query&#039;, &#x5B;] );\n\t$meta_query&#x5B;] = &#x5B;\n\t\t&#039;key&#039;     =&gt; &#039;_EventStartDate&#039;,\n\t\t&#039;value&#039;   =&gt; $today,\n\t\t&#039;compare&#039; =&gt; &#039;&gt;=&#039;,\n\t\t&#039;type&#039;    =&gt; &#039;DATETIME&#039;,\n\t];\n\n\t$query-&gt;set( &#039;meta_query&#039;, $meta_query );\n}, 10 );\n<\/pre><\/div>\n\n\n<p>\u26a0\ufe0f This affects all frontend event queries, including List, Month, and Day views. It does not affect admin event listings.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-hiding-events-by-category\">Hiding Events by Category<\/h3>\n\n\n\n<p>If you have events organized into categories that shouldn&#8217;t be visible on the public calendar, such as internal, admin-only, or invite-only events, you can exclude them by category slug.<\/p>\n\n\n\n<p>The snippets below apply an \u201cOR\u201d logic, meaning that events will be excluded from the calendar view if they match&nbsp;<strong>any<\/strong>&nbsp;of the categories in the exclusion list.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-hide-events-in-all-views\">Hide Events in All Views<\/h4>\n\n\n\n<p>This snippet will hide the events in all main calendar views. Note that this also affects calendars displayed with the <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/k\/embedding-calendar-views-with-the-tribe_events-shortcode\/\"><code>[tribe_events]<\/code>shortcode<\/a>. (See <a href=\"#Hide_only_on_shortcode_page\">below<\/a> for a solution to exclude that.)<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_views_v2_view_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\n\nfunction tec_exclude_events_category( $repository_args, $context, $view ) {\n\t\/\/ Get the category we are looking at.\n\t$context_category  = $context-&gt;get( &#039;event_category&#039; );\n\n\t\/\/ List of category slugs to be excluded\n\t$excluded_categories = &#x5B;\n\t\t&#039;my-category-slug&#039;,\n\t\t&#039;my-other-category-slug&#039;,\n\t];\n\n\t\/\/ Bail if we are looking at a category archive.\n\tif ( in_array( $context_category, $excluded_categories, true ) ) {\n\t\treturn $repository_args;\n\t}\n\n\t\/\/ Otherwise exclude events in the given categories.\n\t$repository_args&#x5B;&#039;category_not_in&#039;] = $excluded_categories;\n\n\treturn $repository_args;\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-hide-in-some-views\">Hide in Some Views<\/h4>\n\n\n\n<p>If you don\u2019t want to hide the events in a given category in&nbsp;all&nbsp;views, you can add a modification to the snippet to check for a certain view or views.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_views_v2_view_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\n\nfunction tec_exclude_events_category( $repository_args, $context, $view ) {\n\t\/\/ Get the category we are looking at.\n\t$context_category  = $context-&gt;get( &#039;event_category&#039; );\n\n\t\/\/ List of views where the category should be hidden\n\t$hide_in_views = &#x5B;\n\t\t&#039;month&#039;,\n\t\t&#039;list&#039;,\n\t];\n\n\t\/\/ List of category slugs to be excluded\n\t$excluded_categories = &#x5B;\n\t\t&#039;my-category-slug&#039;,\n\t\t&#039;my-other-category-slug&#039;,\n\t];\n\n\t\/\/ Bail if we are looking at a category archive.\n\tif ( in_array( $context_category, $excluded_categories, true ) ) {\n\t\treturn $repository_args;\n\t}\n\n\t\/\/ If on a given view, exclude events in the given categories.\n\tif ( in_array( $view-&gt;get_slug(), $hide_in_views, true ) ) {\n\t\t$repository_args&#x5B;&#039;category_not_in&#039;] = $excluded_categories;\n\t}\n\n\treturn $repository_args;\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-hide-events-in-one-view-only\">Hide Events in One View Only<\/h4>\n\n\n\n<p>While the snippet above can hide specific events in a single view, there are dedicated hooks available to target individual views separately. The code below lists all the available hooks; simply use the one for the targeted view.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; highlight: [1,2,3,4,5,6]; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_views_v2_view_month_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_list_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_day_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_photo_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_week_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_map_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\n\nfunction tec_exclude_events_category( $repository_args, $context, $view ) {\n\t\/\/ List of category slugs to be excluded\n\t$excluded_categories = &#x5B;\n\t\t&#039;my-category-slug&#039;,\n\t\t&#039;my-other-category-slug&#039;,\n\t];\n\t$repository_args&#x5B;&#039;category_not_in&#039;] = $excluded_categories;\n\n\treturn $repository_args;\n}\n<\/pre><\/div>\n\n\n<p>Choose the hooks that you need.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-hide-events-only-on-shortcode-page\">Hide Events Only on Shortcode Page<\/h4>\n\n\n\n<p>The above snippets will run on both the main calendar pages and the ones created with the <code>[tribe_events]<\/code> shortcode. If you would like to hide only on shortcode pages, then you will need the following:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; highlight: [4,5,6,7]; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_views_v2_view_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\n\nfunction tec_exclude_events_category( $repository_args, $context, $view ) {\n\t\/\/ If not shortcode calendar then bail and show everything\n\tif ( ! $context-&gt;is(&#039;shortcode&#039;) ) {\n\t\treturn $repository_args;\n\t}\n\t\n\t\/\/ List of category slugs to be excluded\n\t$excluded_categories = &#x5B;\n\t\t&#039;my-category-slug&#039;,\n\t\t&#039;my-other-category-slug&#039;,\n\t];\n\t$repository_args&#x5B;&#039;category_not_in&#039;] = $excluded_categories;\n\n\treturn $repository_args;\n}\n<\/pre><\/div>\n\n\n<p>Of course this can be easily adjusted to do the reverse. If you only want to hide the events on main calendar pages then you just need to remove the exclamation point (or&nbsp;<a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Operators\/Logical_NOT\" target=\"_blank\" rel=\"noreferrer noopener\">&#8220;logical NOT&#8221; character<\/a>) on line 5, so it would look like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; first-line: 5; title: ; notranslate\" title=\"\">\n\tif ( $context-&gt;is(&#039;shortcode&#039;) ) {\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-hide-events-if-they-belong-exclusively-to-the-listed-categories\">Hide Events if They Belong Exclusively to the Listed Categories<\/h4>\n\n\n\n<p>The snippets above exclude events if they match any of the listed categories. However, if you want to exclude events only when they are <strong>entirely<\/strong> within the listed categories (and not in any others), you can adjust the logic as shown in the example below.<\/p>\n\n\n\n<p>While the filters you need to use remain the same (choose the appropriate filters for your needs), the key difference is in how the exclusion logic is applied within the function.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/\/ Hide in All Views\nadd_filter( &#039;tribe_events_views_v2_view_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\n\n\/\/Hide in One Specific View Only\nadd_filter( &#039;tribe_events_views_v2_view_month_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_list_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_day_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_photo_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_week_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\nadd_filter( &#039;tribe_events_views_v2_view_map_repository_args&#039;, &#039;tec_exclude_events_category&#039;, 10, 3 );\n\nfunction tec_exclude_events_category( $repository_args, $context, $view ) {\n    \/\/ Get all terms in the &#039;tribe_events_cat&#039; taxonomy\n    $terms = get_terms(&#x5B;\n        &#039;taxonomy&#039;   =&gt; &#039;tribe_events_cat&#039;,\n        &#039;hide_empty&#039; =&gt; false, \/\/ Set to true if you want to exclude empty terms\n    ]);\n\n    \/\/ Check for errors or empty result\n    if ( ! is_wp_error( $terms ) &amp;&amp; ! empty( $terms ) ) {\n        \/\/ Convert terms to an array of term slugs\n        $term_slugs = wp_list_pluck( $terms, &#039;slug&#039; );\n    } else {\n        \/\/ Handle case where no terms are found or there&#039;s an error\n        $term_slugs = &#x5B;];\n    }\n\n    \/\/ List of category slugs to be excluded\n    $excluded_categories = &#x5B;\n\t\t&#039;my-category-slug&#039;,\n\t\t&#039;my-other-category-slug&#039;,\n    ];\n\n    \/\/ Remove the excluded categories from the full list.\n    $show_categories = array_diff( $term_slugs, $excluded_categories );\n\n    \/\/ Build the tax_query argument to strictly include only events in $show_categories\n    $repository_args&#x5B;&#039;category&#039;] = $show_categories;\n    return $repository_args;\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-correcting-the-single-event-navigation\">Correcting the Single-event Navigation<\/h4>\n\n\n\n<p>If you&#8217;re using the code snippet above, you might notice that the single-event navigation (at the bottom) would still show the link to the event that was supposed to be hidden. To correct that behavior, you can use the snippet below.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nfunction skip_events_in_category ( $event, $post_obj, $mode ) {\n\t$excluded_categories = &#x5B;\n\t\t&#039;your-excluded-category-slug&#039;\n\t];\n\tif ($event) {\n\t\t$is_excluded = false;\n\t\tforeach ( $excluded_categories as $index =&gt; $category_slug ) {\n\t\t\tif ( tribe_event_in_category ( $category_slug, $event-&gt;ID ) ) {\n\t\t\t\t$is_excluded = true;\n\t\t\t}\t\t\t\n\t\t}\n\t\tif ( $is_excluded ) {\n\t\t\t$find_next_closest_event = new Tribe__Events__Adjacent_Events();\n\t\t\t$find_next_closest_event-&gt;set_current_event_id ($event-&gt;ID);\n\t\t\treturn $find_next_closest_event-&gt;get_closest_event($mode);\n\t\t}\n\t}\t\n\treturn $event;\t\t\t\n}\nadd_filter ( &#039;tribe_events_get_closest_event&#039;, &#039;skip_events_in_category&#039;, 100, 3 );\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-correcting-the-single-category-view-navigation\">Correcting the single category view navigation<\/h4>\n\n\n\n<p>Some complication may arise when visiting and paginating the single category view (\/events\/category\/{category_slug}) of the category that was meant to be hidden from the calendar views. To correct that behavior, you can update your snippet to the following.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_views_v2_view_repository_args&#039;, function ( $repository_args, $context, $view ) {\n    \/\/ List of category slugs to be excluded\n    $excluded_categories = &#x5B;\n        &#039;your-excluded-category-slug&#039;\n    ];\n\t\/\/ If we&#039;re not on category list view exclude events in categories array\n\tif ( !$context-&gt;is(&#039;tribe_events_cat&#039;) ) {\n\t\t$repository_args&#x5B;&#039;category_not_in&#039;] = $excluded_categories;\n\t}\n\treturn $repository_args;    \n}, 10, 3 );\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-hiding-events-by-event-id\">Hiding Events by Event ID<\/h3>\n\n\n\n<p>To exclude one or more specific events from calendar views without affecting their category or tag assignments, you can target them directly by post ID. This is useful for one-off cases where a specific event needs to be hidden from the frontend.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_views_v2_view_repository_args&#039;, &#039;tec_exclude_specific_event_ids&#039;, 10, 3 );\n\nfunction tec_exclude_specific_event_ids( $repository_args, $context, $view ) {\n    \/\/ List of event post IDs to exclude\n    $excluded_event_ids = &#x5B; 1234, 2222 ]; \/\/ Replace with your actual event post IDs\n\n    \/\/ Merge with existing &#039;post__not_in&#039; if set\n    if ( isset( $repository_args&#x5B;&#039;post__not_in&#039;] ) &amp;&amp; is_array( $repository_args&#x5B;&#039;post__not_in&#039;] ) ) {\n        $repository_args&#x5B;&#039;post__not_in&#039;] = array_merge( $repository_args&#x5B;&#039;post__not_in&#039;], $excluded_event_ids );\n    } else {\n        $repository_args&#x5B;&#039;post__not_in&#039;] = $excluded_event_ids;\n    }\n\n    return $repository_args;\n}\n\n<\/pre><\/div>\n\n\n<p>To find ID of an event:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to <strong>Events \u2192 All Events<\/strong><\/li>\n\n\n\n<li>Hover over the event name and check the URL preview, e.g.,<br><code>post.php?post=1234&amp;action=edit<\/code><br>Here, <code>1234<\/code> is the post ID.<\/li>\n\n\n\n<li>Note the post ID and edit line 5 above.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"296\" height=\"34\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/08\/URL.jpg\" alt=\"\" class=\"wp-image-1966359\" style=\"border-width:1px;width:350px\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-hiding-events-by-tag\">Hiding Events by Tag<\/h3>\n\n\n\n<p>If you prefer to manage event visibility using tags rather than categories, you can exclude events from all calendar views by their tag slug. This is useful when you want a lightweight way to flag individual events for suppression, for example, applying a <code>hidden<\/code> tag, without creating a dedicated category for them.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_views_v2_view_repository_args&#039;, &#039;tec_exclude_events_by_tag&#039;, 10, 3 );\n\nfunction tec_exclude_events_by_tag( $repository_args, $context, $view ) {\n    \/\/ List of tag slugs to exclude\n    $excluded_tags = &#x5B; &#039;hidden&#039; ]; \/\/ Replace with your actual tag slugs\n\n    \/\/ Use &#039;tag_not_in&#039; to exclude events with these tags\n    $repository_args&#x5B;&#039;tag_not_in&#039;] = $excluded_tags;\n\n    return $repository_args;\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-removing-the-event-end-time\">Removing the Event End Time<\/h2>\n\n\n\n<p>By default, TEC displays both the start and end time for events across all views.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/single-start-end-time.png\" alt=\"An event showing both start time and end time\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-using-settings-easiest\">Using Settings (Easiest)<\/h4>\n\n\n\n<p>The simplest way is via <strong>Events \u2192 Settings \u2192 Display \u2192 Date &amp; Time \u2192 Remove event end time<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/image-2.png\" alt=\"The Remove event end time checkbox in Events Settings\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-using-a-snippet\">Using a Snippet<\/h4>\n\n\n\n<p>To remove the end time with code, add the following to your child theme&#8217;s <code>functions.php<\/code> or via the Code Snippets plugin. This hides end times across List, Day, Map, and Photo views, and within event details and tooltips in Week and Month views.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_event_schedule_details_formatting&#039;, &#039;tribe_remove_end_date&#039; );\nfunction tribe_remove_end_date( $settings ) {\n    $settings&#x5B;&#039;show_end_time&#039;] = false;\n    return $settings;\n}\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/single-start-time.png\" alt=\"An event showing only the start time after the end time has been removed\"\/><\/figure>\n\n\n\n<p>To remove all times entirely (start and end):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_event_schedule_details_formatting&#039;, &#039;tribe_remove_end_date&#039; );\nfunction tribe_remove_end_date( $settings ) {\n    $settings&#x5B;&#039;time&#039;] = false;\n    return $settings;\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-removing-end-times-from-month-map-and-photo-views-via-template-override\">Removing End Times from Month, Map, and Photo Views via Template Override<\/h4>\n\n\n\n<p>The snippet above does not cover the date\/time display inside the Month, Map, and Photo view grid cells \u2014 those use separate template files. To remove end times there, override the relevant template and change one line in each file.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>View<\/th><th>Template to override<\/th><\/tr><\/thead><tbody><tr><td>Month view<\/td><td><code>the-events-calendar\/src\/views\/v2\/month\/calendar-body\/day\/calendar-events\/calendar-event\/date.php<\/code><\/td><\/tr><tr><td>Map view<\/td><td><code>events-pro\/src\/views\/v2\/map\/event-cards\/event-card\/event\/date-time.php<\/code><\/td><\/tr><tr><td>Photo view<\/td><td><code>events-pro\/src\/views\/v2\/photo\/event\/date-time.php<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>In each overridden file, find:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$display_end_date = $event-&gt;dates-&gt;start_display-&gt;format( &#039;H:i&#039; ) !== $event-&gt;dates-&gt;end_display-&gt;format( &#039;H:i&#039; );\n<\/pre><\/div>\n\n\n<p>Replace it with:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$display_end_date = false;\n<\/pre><\/div>\n\n\n<p>Map and Photo views require <a href=\"https:\/\/theeventscalendar.com\/products\/events-calendar-pro\/\">Events Calendar Pro<\/a>. For template override instructions, see <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/k\/customizing-template-files-2\/\">Customizing Template Files<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-customizing-the-calendar-page-title\">Customizing the Calendar Page Title<\/h2>\n\n\n\n<p>The title shown on your main calendar page can come from one of two places depending on your theme and template settings: either from TEC itself (via <code>tribe_get_events_title()<\/code>) or from your theme (via WordPress&#8217;s <code>get_the_archive_title()<\/code>). The method you need depends on which function is producing the title on your site.<\/p>\n\n\n\n<p>The most common symptom that sends people here is seeing the word <strong>&#8220;Archives&#8221;<\/strong> prepended to the calendar title \u2014 for example, &#8220;Archives: Events.&#8221; This happens when a theme uses the Default Page Template setting and outputs <code>get_the_archive_title()<\/code> without filtering it for custom post types.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/tec-page-title-archives.jpg\" alt=\"A calendar page title showing 'Archives: Events'\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-option-1-when-your-theme-controls-the-title\">Option 1: When Your Theme Controls the Title<\/h4>\n\n\n\n<p>If your theme (including Blocksy and most page builders) outputs the title, use the <code>get_the_archive_title<\/code> filter. This also fixes the &#8220;Archives&#8221; prefix:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nfunction tec_custom_archive_page_title( $title ) {\n    if ( is_post_type_archive( &#039;tribe_events&#039; ) ) {\n        $title = &#039;Upcoming Events&#039;; \/\/ Replace with your preferred title\n    }\n    return $title;\n}\nadd_filter( &#039;get_the_archive_title&#039;, &#039;tec_custom_archive_page_title&#039; );\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-option-2-when-the-events-calendar-controls-the-title\">Option 2: When The Events Calendar Controls the Title<\/h4>\n\n\n\n<p>If your setup uses TEC&#8217;s built-in title function, use the <code>tribe_get_events_title<\/code> filter instead:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nfunction tec_custom_events_page_title( $title ) {\n    if ( is_post_type_archive( &#039;tribe_events&#039; ) ) {\n        $title = &#039;Upcoming Events&#039;; \/\/ Replace with your preferred title\n    }\n    return $title;\n}\nadd_filter( &#039;tribe_get_events_title&#039;, &#039;tec_custom_events_page_title&#039; );\n<\/pre><\/div>\n\n\n<p>Add either snippet to your child theme&#8217;s <code>functions.php<\/code> or via the Code Snippets plugin.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-notes-for-elementor-and-other-page-builders\">Notes for Elementor and Other Page Builders<\/h4>\n\n\n\n<p>Some themes \u2014 including Blocksy \u2014 and site builders like Elementor and Divi manage archive page titles within their own templates or widgets, which can override both filters above. If neither snippet takes effect, try switching the Events template to <strong>Default Events Template<\/strong> under <strong>Events \u2192 Settings \u2192 Display \u2192 Events Template<\/strong> to give TEC full control over the page layout and title.<\/p>\n\n\n\n<p>To change the browser\/meta title for calendar views rather than the on-page heading, see <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/changing-the-browser-title-for-calendar-views\/\">Changing the Browser Title for Calendar Views<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-changing-the-browser-tab-meta-title\">Changing the Browser Tab (Meta) Title<\/h2>\n\n\n\n<p>While the previous section covers the visible on-page heading, this section covers the <strong>browser\/meta title<\/strong>, the text that appears in your browser&#8217;s tab, and in search engine results. These are controlled by different filters and can be customized independently.<\/p>\n\n\n\n<p>The following code snippet can be used to change or modify the meta title for calendar views:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; auto-links: false; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_events_title_tag&#039;, function ( $title ) {\n\tif ( tribe_context()-&gt;get( &#039;view_request&#039; ) === &#039;default&#039; ) {\n\t\t$title = &#039;Default event page&#039;;\n\t} elseif ( tribe_context()-&gt;get( &#039;view_request&#039; ) === &#039;list&#039; ) {\n\t\t$title = &#039;Single event page&#039;;\n\t} elseif ( tribe_context()-&gt;get( &#039;view_request&#039; ) === &#039;month&#039; ) {\n\t\t$title = &#039;Month event page&#039;;\n\t} elseif ( tribe_context()-&gt;get( &#039;view_request&#039; ) === &#039;day&#039; ) {\n\t\t$title = &#039;Day event page&#039;;\n\t} elseif ( tribe_context()-&gt;get( &#039;view_request&#039; ) === &#039;summary&#039; ) {\n\t\t$title = &#039;Summary event page&#039;;\n\t} elseif ( tribe_context()-&gt;get( &#039;view_request&#039; ) === &#039;photo&#039; ) {\n\t\t$title = &#039;Photo event page&#039;;\n\t} elseif ( tribe_context()-&gt;get( &#039;view_request&#039; ) === &#039;map&#039; ) {\n\t\t$title = &#039;Map event page&#039;;\n\t}\n\n\treturn $title;\n} );\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-disabling-event-links-by-category\">Disabling Event Links by Category<\/h2>\n\n\n\n<p>By default, every event in every view links through to its single event page. If you want to display certain events \u2014 such as holidays, blackout dates, or days when a business is closed \u2014 without linking to a detail page, you can use CSS to disable the links for events in a specific category.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-create-a-category\">Create a Category<\/h4>\n\n\n\n<p>First, <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/k\/event-categories\/\">create an event category<\/a> for events that shouldn&#8217;t be clickable. In the examples below, the category slug is <code>holiday<\/code>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-disable-links-in-list-month-day-and-summary-views\">Disable Links in List, Month, Day, and Summary Views<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n.tribe_events_cat-holiday h3 a {\n    pointer-events: none;\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-disable-links-in-photo-and-week-views\">Disable Links in Photo and Week Views<\/h4>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n.tribe-events-view--photo .tribe_events_cat-holiday a {\n    pointer-events: none;\n}\n<\/pre><\/div>\n\n\n<p>Replace <code>holiday<\/code> with your actual category slug throughout. For Map View, the link lives inside a template rather than a simple anchor, so disabling it requires a template override of:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\/events-calendar-pro\/src\/views\/v2\/map\/event-cards\/event-card\/actions\/details.php\n<\/pre><\/div>\n\n\n<p>Add this CSS to your child theme&#8217;s stylesheet or under <strong>Appearance \u2192 Customize \u2192 Additional CSS<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-disabling-the-latest-past-events-list\">Disabling the \u201cLatest Past Events\u201d List<\/h2>\n\n\n\n<p>If you have no upcoming events on your calendar, by default, you will see the \u201cLatest Past Events\u201d view. We\u2019ve added this view as a way for your site visitors to see events that you\u2019ve previously had, rather than an empty calendar.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"594\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/image-3.png\" alt=\"\" class=\"wp-image-1969433\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/image-3.png 1024w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/image-3-300x174.png 300w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/image-3-768x446.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>However, you may prefer to see the current month\u2019s calendar, even if it has no upcoming events. In order to do that, you can add a filter to your site to disable the \u201cLatest Past Events\u201d view<\/p>\n\n\n\n<p>Add one of the following snippets to your theme\u2019s&nbsp;<code>functions.php<\/code>&nbsp;file or by using&nbsp;the <a href=\"https:\/\/wordpress.org\/plugins\/code-snippets\/\">Code Snippets<\/a>&nbsp;plugin.<\/p>\n\n\n\n<p><strong>To disable the Latest Past View for all Views:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nadd_filter(\n    &#039;tribe_events_views_v2_show_latest_past_events_view&#039;,\n    function( $show, $view_slug, $view_object ) {\n        \/\/ We want to disable them all!\n        return false;\n    },\n    10,\n    3\n);\n<\/pre><\/div>\n\n\n<p>There are two approaches for disabling it for one view, the simplest is to use the slug-ified filter. So to disable for just Month View:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter(\n    &#039;tribe_events_views_v2_month_show_latest_past_events_view&#039;,\n    function( $show, $view_slug, $view_object ) {\n        \/\/ We just want to disable this for the month view!\n        return false;\n    },\n    10,\n    3\n);\n<\/pre><\/div>\n\n\n<p>But you may want to disable it for a few and enable it for a few, you can use the \u201cgeneric\u201d filter to do it like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter(\n    &#039;tribe_events_views_v2_show_latest_past_events_view&#039;,\n    function( $show, $view_slug, $view_object ) {\n        \/\/ We want to disable for month and photo!\n        if (\n            &#039;month&#039; === $view_slug\n            ||&#039;photo&#039; === $view_slug\n        ) {\n            return false;\n        }\n \n        return $show;\n    },\n    10,\n    3\n);\n<\/pre><\/div>\n\n\n<p>The above snippets will generate an empty display on upcoming events to your views, such as this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"338\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/image-4.png\" alt=\"\" class=\"wp-image-1969436\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/image-4.png 1024w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/image-4-300x99.png 300w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/image-4-768x254.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In addition to the above filters, we also have an extension that includes the option to remove the \u201cRecent Past Events\u201d view. You can find it&nbsp;<a href=\"https:\/\/theeventscalendar.com\/extensions\/the-events-calendar-tweaks\/\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-adding-content-above-the-calendar\">Adding Content Above the Calendar<\/h2>\n\n\n\n<p>To add custom text, HTML, or any other content above a calendar view, create a template override for the view&#8217;s top-level template file and add your content inside the main layout container.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-template-files-to-override\">Template Files to Override<\/h4>\n\n\n\n<p><strong>The Events Calendar<\/strong> (Month, List, Day):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>wp-content\/plugins\/the-events-calendar\/src\/views\/v2\/month.php<\/code><\/li>\n\n\n\n<li><code>wp-content\/plugins\/the-events-calendar\/src\/views\/v2\/list.php<\/code><\/li>\n\n\n\n<li><code>wp-content\/plugins\/the-events-calendar\/src\/views\/v2\/day.php<\/code><\/li>\n<\/ul>\n\n\n\n<p><strong>Events Calendar Pro<\/strong> (Photo, Map, Summary, Week):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>wp-content\/plugins\/events-calendar-pro\/src\/views\/v2\/photo.php<\/code><\/li>\n\n\n\n<li><code>wp-content\/plugins\/events-calendar-pro\/src\/views\/v2\/map.php<\/code><\/li>\n\n\n\n<li><code>wp-content\/plugins\/events-calendar-pro\/src\/views\/v2\/summary.php<\/code><\/li>\n\n\n\n<li><code>wp-content\/plugins\/events-calendar-pro\/src\/views\/v2\/week.php<\/code><\/li>\n<\/ul>\n\n\n\n<p>See <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/k\/customizing-template-files-2\/\">Customizing Template Files<\/a> for instructions on creating a template override in your theme.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-where-to-insert-your-content\">Where to Insert Your Content<\/h4>\n\n\n\n<p>In each overridden file, locate the line:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;lt;div class=&quot;tribe-common-l-container tribe-events-l-container&quot;&gt;\n<\/pre><\/div>\n\n\n<p>Add your content in a <code>&lt;div&gt;<\/code> immediately after it:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;lt;div class=&quot;tribe-common-l-container tribe-events-l-container&quot;&gt;\n&amp;lt;div&gt;Your custom text or HTML here&amp;lt;\/div&gt;\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-customizing-the-calendar-header-and-events-bar\">Customizing the Calendar Header and Events Bar<\/h2>\n\n\n\n<p>The calendar header appears at the top of every view. It has two parts: the Events Bar at the top (keyword search and view switcher) and a bottom row with pagination and a date picker.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/tribe-event-search-bar-1.png\" alt=\"The calendar header showing the Events Bar with keyword search and view switcher above the pagination row\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-via-settings\">Via Settings<\/h3>\n\n\n\n<p>To hide the search bar entirely, go to <strong>Events \u2192 Settings \u2192 Display \u2192 Calendar Display<\/strong> and check <strong>Disable the Event Search Bar<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/disable-the-search-bar.png\" alt=\"The Disable the Event Search Bar checkbox in calendar settings\"\/><\/figure>\n\n\n\n<p>If you&#8217;re using a <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/k\/setting-up-your-google-maps-api-key\/\">Google Maps API key<\/a>, the Events Bar will also include a location search field. To hide that, check <strong>Hide location search<\/strong> on the same settings screen.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/tribe-events-bar-with-google-maps-location-1.png\" alt=\"The Events Bar showing the location search field when a Google Maps API key is active\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/hide-location-search.png\" alt=\"The Hide location search checkbox in calendar settings\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-via-templates\">Via Templates<\/h3>\n\n\n\n<p>The view switcher in the Events Bar displays as a tab row when three or fewer views are active, and as a dropdown when more views are active (which is typical when ECP is installed).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/header-view-switcher.png\" alt=\"The Events Bar showing views as a horizontal tab row\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/list-header-view-switcher.png\" alt=\"The Events Bar showing views as a dropdown\"\/><\/figure>\n\n\n\n<p>To control this, create a template override of:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\/wp-content\/plugins\/the-events-calendar\/src\/views\/v2\/components\/events-bar\/views.php\n<\/pre><\/div>\n\n\n<p>Find this line:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$is_tabs_style = empty( $disable_event_search ) &amp;amp;&amp;amp; 3 &gt;= count( $public_views );\n<\/pre><\/div>\n\n\n<p>To always show a dropdown, change <code>3<\/code> to <code>1<\/code>. To always show tabs, replace the line with:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n$is_tabs_style = true;\n<\/pre><\/div>\n\n\n<p>To hide a specific view from the switcher menu without disabling it entirely, find the <code>foreach<\/code> loop in the same file and add a <code>continue<\/code> conditional. The example below hides List View from the menu:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&amp;lt;?php foreach ( $public_views as $public_view_slug =&gt; $public_view_data ) : ?&gt;\n    &amp;lt;?php if ( &#039;list&#039; === $public_view_slug ) : ?&gt;\n        &amp;lt;?php continue; ?&gt;\n    &amp;lt;?php endif; ?&gt;\n    &amp;lt;?php $this-&gt;template(\n        &#039;components\/events-bar\/views\/list\/item&#039;,\n        &#x5B; &#039;public_view_slug&#039; =&gt; $public_view_slug, &#039;public_view_data&#039; =&gt; $public_view_data ]\n    ); ?&gt;\n&amp;lt;?php endforeach; ?&gt;\n<\/pre><\/div>\n\n\n<p>If only one view is active, its button will still appear in the switcher but essentially refreshes the page. To suppress it, override:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n\/wp-content\/plugins\/the-events-calendar\/src\/views\/v2\/components\/events-bar\/views\/list.php\n<\/pre><\/div>\n\n\n<p>to <code>[your-theme]\/tribe\/events\/v2\/components\/events-bar\/views\/list.php<\/code>, then add just before the closing <code>?&gt;<\/code>:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nreturn; \/\/ hiding this!\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-via-css\">Via CSS<\/h3>\n\n\n\n<p>For simple style tweaks to the header, CSS is often the quickest approach. All calendar views inherit styles from the <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/k\/wordpress-customizer-2\/\">WordPress Customizer settings<\/a>, but you can also target header elements directly in your stylesheet.<\/p>\n\n\n\n<p>Change the keyword search input text color:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n#tribe-events-events-bar-keyword {\n    color: blueviolet;\n}\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/header-search-custom-css.png\" alt=\"The calendar search bar with custom violet text color\"\/><\/figure>\n\n\n\n<p>Change the Events Bar border color:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n.tribe-events-header__events-bar.tribe-events-c-events-bar.tribe-events-c-events-bar--border {\n    border-color: blueviolet;\n}\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/header-search-custom-css-border.png\" alt=\"The calendar search bar with custom violet text and border\"\/><\/figure>\n\n\n\n<p>Change the search button background and text color (useful when a theme overrides the default button styles):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n.tribe-common-c-btn.tribe-events-c-search__button {\n    background-color: blueviolet;\n    color: #fff;\n}\n<\/pre><\/div>\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/02\/header-custom-css-button-color.png\" alt=\"The calendar search button with a custom violet background and white text\"\/><\/figure>\n\n\n\n<p>Some themes have their own CSS class prefixes that can be used for more targeted overrides. For example, targeting the search button specifically on the Twenty Twenty theme:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n.tribe-theme-twentytwenty .tribe-common .tribe-common-c-btn {\n    background-color: blueviolet;\n    color: #000;\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-disabling-the-events-archive-page\">Disabling the Events Archive Page<\/h2>\n\n\n\n<p>The&nbsp;Events URL slug&nbsp;in&nbsp;Events \u2192 Settings \u2192 General (tab) \u2192 Viewing (section)&nbsp;allows you to set the front-end calendar (archive of events) permalink on your site. This is a default, dynamically generated page of The Events Calendar.<\/p>\n\n\n\n<p>If you come to a situation where you do not need this page made available on the front end, the following code snippet, which you can append to your theme\u2019s functions.php file, may help.<\/p>\n\n\n\n<script src=\"https:\/\/gist.github.com\/masoodahmed\/7b46d4010ee15604dacb315674a65965.js\"><\/script>\n\n\n\n<p>The snippet above will direct users to a page not found (404) page.<\/p>\n\n\n\n<p>Now, the single event page has an <strong>All Events<\/strong> link, which is designed to redirect users to the default events archive page, so to get around this, the following code snippet may help.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter ( &#039;tribe_get_events_link&#039; , function ( $link ) {\n    return $link = &#039;https:\/\/your-site.com\/your-calendar-permalink&#039;;\n} );\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-customize-the-today-button-label\"><strong>Customize the &#8220;Today&#8221; Button Label<\/strong><\/h2>\n\n\n\n<p>The &#8220;Today&#8221; button on calendar views lets users jump to the current date. You can rename it to something more personalized.<\/p>\n\n\n\n<p><strong>What it does:<\/strong>&nbsp;Changes the label on the calendar\u2019s &#8220;Today&#8221; button.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tec_events_today_button_label&#039;, function( $label ) {\n    return __( &#039;Current Day&#039;, &#039;your-text-domain&#039; );\n});\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=\"278\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-01-at-22.40.26-1024x278.png\" alt=\"\" class=\"wp-image-1965844\" style=\"width:559px;height:auto\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-01-at-22.40.26-1024x278.png 1024w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-01-at-22.40.26-300x81.png 300w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-01-at-22.40.26-768x208.png 768w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2025\/07\/Screenshot-2025-07-01-at-22.40.26.png 1383w\" 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_events_today_button_label\/\" target=\"_blank\" rel=\"noreferrer noopener\">tec_events_today_button_label<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-add-a-sold-out-css-class-to-events-and-series\">Add a &#8220;Sold Out&#8221; CSS Class to Events and Series<\/h2>\n\n\n\n<p>When using Events Calendar, you might notice that while individual events show a &#8220;Sold Out&#8221; notice, event series or specific views may not apply a distinct CSS class to the entire event container. This makes it difficult to style sold-out events, such as fading them out or adding a &#8220;Sold Out&#8221; banner to prevent user confusion.<\/p>\n\n\n\n<p>By adding a custom CSS class to any event that has reached its capacity, you can gain full control over the styling of sold-out events across all calendar views.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-the-code-snippet\">The Code Snippet<\/h3>\n\n\n\n<p>The following code uses the WordPress <code>post_class<\/code> filter. It checks if a post is an event and then uses the plugin&#8217;s built-in <code>tribe_events_has_soldout()<\/code> function to determine if tickets are gone. If they are, it appends a custom <code>event-sold-out<\/code> class to the event&#8217;s HTML container.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/**\n * Add an &#039;event-sold-out&#039; class to the post class of events that are sold out.\n *\/\nadd_filter( &#039;post_class&#039;, function( $classes, $class, $post_id ) {\n\n    \/\/ Only apply this to event post types\n    if ( get_post_type( $post_id ) !== &#039;tribe_events&#039; ) {\n        return $classes;\n    }\n\n    \/\/ Check if the event has sold out tickets\n    if ( function_exists( &#039;tribe_events_has_soldout&#039; ) &amp;&amp; tribe_events_has_soldout( $post_id ) ) {\n        $classes&#x5B;] = &#039;event-sold-out&#039;;\n    }\n\n    return $classes;\n\n}, 10, 3 );\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-how-to-use-the-code\">How to Use the Code<\/h3>\n\n\n\n<p><strong>Add the snippet:<\/strong> You can add this PHP block to your child theme&#8217;s <strong><code>functions.php<\/code><\/strong> file or, preferably, use a dedicated Code Snippet plugin.<\/p>\n\n\n\n<p><strong>Apply your CSS:<\/strong> Once the snippet is active, every sold-out event will have the <code>.event-sold-out<\/code> class. You can now add custom CSS to your theme (via <strong>Appearance &gt; Customize &gt; Additional CSS<\/strong>).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-example-styling\">Example Styling<\/h4>\n\n\n\n<p>To fade out sold-out events in Photo View, you can use CSS like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: css; title: ; notranslate\" title=\"\">\n\/* Fade out the entire event container *\/\n.tribe-events-pro-photo__event.event-sold-out {\n    opacity: 0.3;\n    filter: grayscale(100%);\n    pointer-events: none; \/* Optional: prevents clicks *\/\n}\n\n\/* Add a custom label or ribbon if desired *\/\n.tribe-events-pro-photo__event.event-sold-out::after {\n    content: &quot;SOLD OUT&quot;;\n    position: absolute;\n\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n\n    background: rgba(200, 0, 0, 0.9);\n    color: #fff;\n\n    padding: 12px 30px;\n    font-size: 18px;\n    font-weight: 700;\n    letter-spacing: 2px;\n\n    text-align: center;\n    z-index: 20;\n}\n\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h3>\n\n\n\n<p>This method provides a robust way to visually differentiate sold-out series from available ones, improving the user experience by signaling availability before a user even clicks. For more information on safely adding code to your site, please refer to our guide on <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/best-practices-for-implementing-custom-code-snippets\/\" target=\"_blank\" rel=\"noreferrer noopener\">best practices for implementing custom code snippets<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Events Calendar&#8217;s calendar views \u2014 Month, List, Day, and the additional views available with Events Calendar Pro \u2014 share a common set of customization options that apply across all views. This article covers those general customizations: how many events appear, what displays in the header, how the page title is output, and more. For&#8230;<\/p>\n","protected":false},"author":5,"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":[116,24,59,84],"tags":[23,25,58],"stellar-product-taxonomy":[161],"class_list":["post-1946043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css","category-customizing","category-php","category-templates","tag-css","tag-customizations","tag-php","stellar-product-taxonomy-the-events-calendar"],"acf":[],"taxonomy_info":{"category":[{"value":116,"label":"CSS"},{"value":24,"label":"Customizing"},{"value":59,"label":"PHP"},{"value":84,"label":"Template Overrides"}],"post_tag":[{"value":23,"label":"CSS"},{"value":25,"label":"Customizations"},{"value":58,"label":"PHP"}],"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":"Leah","author_link":"https:\/\/theeventscalendar.com\/knowledgebase\/author\/leahk\/"},"comment_info":0,"category_info":[{"term_id":116,"name":"CSS","slug":"css","term_group":0,"term_taxonomy_id":116,"taxonomy":"category","description":"","parent":24,"count":19,"filter":"raw","term_order":"0","cat_ID":116,"category_count":19,"category_description":"","cat_name":"CSS","category_nicename":"css","category_parent":24},{"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":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},{"term_id":84,"name":"Template Overrides","slug":"templates","term_group":0,"term_taxonomy_id":84,"taxonomy":"category","description":"","parent":24,"count":27,"filter":"raw","term_order":"0","cat_ID":84,"category_count":27,"category_description":"","cat_name":"Template Overrides","category_nicename":"templates","category_parent":24}],"tag_info":[{"term_id":23,"name":"CSS","slug":"css","term_group":0,"term_taxonomy_id":23,"taxonomy":"post_tag","description":"","parent":20,"count":10,"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"}],"_links":{"self":[{"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1946043","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\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/comments?post=1946043"}],"version-history":[{"count":21,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1946043\/revisions"}],"predecessor-version":[{"id":1970079,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1946043\/revisions\/1970079"}],"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=1946043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/categories?post=1946043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/tags?post=1946043"},{"taxonomy":"stellar-product-taxonomy","embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/stellar-product-taxonomy?post=1946043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}