{"id":1967984,"date":"2026-01-06T07:22:35","date_gmt":"2026-01-06T12:22:35","guid":{"rendered":"https:\/\/theeventscalendar.com\/knowledgebase\/?p=1967984"},"modified":"2026-04-10T15:07:15","modified_gmt":"2026-04-10T19:07:15","slug":"customizing-woocommerce-checkout","status":"publish","type":"post","link":"https:\/\/theeventscalendar.com\/knowledgebase\/customizing-woocommerce-checkout\/","title":{"rendered":"Customizing WooCommerce Tickets Checkout"},"content":{"rendered":"\n<p>When using Event Tickets Plus with WooCommerce, the default checkout flow works well out of the box \u2014 but you may want to tailor it to better fit your event setup. This article covers several common customizations. Each customization uses a short PHP snippet or a settings change.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-redirect-get-tickets-directly-to-woocommerce-checkout\">Redirect &#8216;Get Tickets&#8217; Directly to WooCommerce Checkout<\/h2>\n\n\n\n<p>When using Event Tickets Plus with WooCommerce, the default flow requires users to click &#8220;Get Tickets&#8221;, fill out attendee information, view their cart, and finally proceed to checkout.<\/p>\n\n\n\n<p>If your event does not require specific attendee details, you can bypass the cart page and send users directly to the checkout page. This creates a faster, &#8220;Direct Checkout&#8221; experience. Here&#8217;s how to do it with a simple snippet:<\/p>\n\n\n\n<p>Before adding the code snippet, you must disable the Individual Attendee Collection feature. If this is enabled, the plugin will always redirect to an intermediate &#8220;Attendee Registration&#8221; page, which prevents a direct leap to checkout.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Open the <strong>Edit<\/strong> screen for your specific Event.<\/li>\n\n\n\n<li>Scroll down to the <strong>Tickets<\/strong> section.<\/li>\n\n\n\n<li>Set <strong>Individual Attendee Collection<\/strong> to &#8220;No Individual Attendee Collection.&#8221;<\/li>\n<\/ol>\n\n\n\n<p>Alternatively, you can disable this globally for all tickets by navigating to <strong>Tickets &gt; Settings &gt; Attendee Registration<\/strong> and selecting &#8220;No Individual Attendee Collection.&#8221;<\/p>\n\n\n\n<p>The following code uses the <code>template_redirect<\/code> hook to check if a user is landing on the WooCommerce cart page. If the cart contains items, the script automatically redirects them to the secure checkout URL.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n\/**\n * Skip the WooCommerce cart page and redirect straight to the checkout page.\n *\/\nadd_action( &#039;template_redirect&#039;, function () {\n    \/\/ Only redirect if WooCommerce is active and the user is on the cart page\n    if ( function_exists( &#039;is_cart&#039; ) &amp;&amp; is_cart() &amp;&amp; function_exists( &#039;WC&#039; ) &amp;&amp; WC()-&gt;cart &amp;&amp; ! WC()-&gt;cart-&gt;is_empty() ) {\n        wp_safe_redirect( wc_get_checkout_url() );\n        exit;\n    }\n} );\n<\/pre><\/div>\n\n\n<p>You can add these PHP snippets to your child theme <code>functions.php<\/code> file. However, we recommend using a dedicated code snippets plugin to avoid issues with theme updates. For more information, please see our guide on the <a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/best-practices-for-implementing-custom-code-snippets\/\">best practices for implementing custom code snippets<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-show-event-titles-in-the-cart\">Show Event Titles in the Cart<\/h2>\n\n\n\n<p>When running an event-based eCommerce site using WooCommerce, it\u2019s crucial that your customers can easily identify the products in their cart. A common issue arises when multiple tickets for different events share the same product name. For instance, if a customer adds two &#8220;General Admission&#8221; tickets from different events, the cart may display them simply as &#8220;General Admission.&#8221; This can lead to confusion regarding which ticket belongs to which event, potentially affecting the customer experience and ultimately, sales.<\/p>\n\n\n\n<p>Here is an example of how two <span style=\"text-decoration: underline;\"><a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/ticket-products-event-tickets-plus-integration-with-woocommerce\/\" target=\"_blank\" rel=\"noreferrer noopener\">Ticket Products<\/a><\/span> from different events, both titled &#8220;General Admission&#8221;, would appear in the WooCommerce Cart,<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large is-resized has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"480\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/QrJjVh4PP2-1024x480.png\" alt=\"WooCommerce Cart with two ticket products of same name\" class=\"has-border-color has-theme-palette-3-border-color wp-image-1965255\" style=\"border-width:2px;border-radius:5px;width:800px\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/QrJjVh4PP2-1024x480.png 1024w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/QrJjVh4PP2-300x141.png 300w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/QrJjVh4PP2-768x360.png 768w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/QrJjVh4PP2-1536x720.png 1536w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/QrJjVh4PP2.png 1669w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>To address this issue, we can use a simple snippet that enhances the information displayed in the WooCommerce cart. The following code snippets will help implement a solution that appends the event title to the ticket product title within the cart.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized has-custom-border\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"460\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/PQXLWSlkAM-1024x460.png\" alt=\"WooCommerce Cart with two ticket products of same name with event titles appended\" class=\"has-border-color has-theme-palette-3-border-color wp-image-1965256\" style=\"border-width:2px;border-radius:5px;width:800px\" srcset=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/PQXLWSlkAM-1024x460.png 1024w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/PQXLWSlkAM-300x135.png 300w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/PQXLWSlkAM-768x345.png 768w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/PQXLWSlkAM-1536x690.png 1536w, https:\/\/images.theeventscalendar.com\/kb\/uploads\/2019\/10\/PQXLWSlkAM.png 1699w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h4 class=\"wp-block-heading\" id=\"h-the-snippets\">The Snippets<\/h4>\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_filter( &#039;woocommerce_cart_item_name&#039;, function( $product_name, $cart_item ) {\n    if ( function_exists( &#039;tribe_events_get_ticket_event&#039; ) ) {\n        $event = tribe_events_get_ticket_event( $cart_item&#x5B;&#039;product_id&#039;] );\n\n        if ( $event &amp;&amp; tribe_is_event( $event-&gt;ID ) ) {\n            $product_name .= &#039; - &#039; . esc_html( $event-&gt;post_title );\n        }\n    }\n\n    return $product_name;\n}, 10, 2 );\n<\/pre><\/div>\n\n\n<p>If using WooCommerce <span style=\"text-decoration: underline;\"><a href=\"https:\/\/woocommerce.com\/document\/woocommerce-store-editing\/customizing-cart-and-checkout\/cart-block\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cart Block<\/a><\/span> instead of the legacy <span style=\"text-decoration: underline;\"><a href=\"https:\/\/woocommerce.com\/document\/woocommerce-shortcodes\/page-shortcodes\/#cart\" target=\"_blank\" rel=\"noreferrer noopener\">Cart Shortcode<\/a><\/span>, use the following snippet<\/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_filter( &#039;woocommerce_add_cart_item_data&#039;, function ( $cart_item_data, $product_id ) {\n\tif ( function_exists( &#039;tribe_events_get_ticket_event&#039; ) &amp;&amp; function_exists( &#039;tribe_is_event&#039; ) ) {\n\t\t$event = tribe_events_get_ticket_event( $product_id );\n\t\tif ( $event &amp;&amp; tribe_is_event( $event ) ) {\n\t\t\t$cart_item_data&#x5B;&#039;event_title&#039;] = $event-&gt;post_title;\n\t\t}\n\t}\n\n\treturn $cart_item_data;\n}, 10, 2 );\n\nadd_filter( &#039;woocommerce_get_item_data&#039;, function ( $item_data, $cart_item_data ) {\n\tif ( isset( $cart_item_data&#x5B;&#039;event_title&#039;] ) ) {\n\t\t$item_data&#x5B;] = array(\n\t\t\t&#039;name&#039;  =&gt; &#039;Event&#039;,\n\t\t\t&#039;value&#039; =&gt; $cart_item_data&#x5B;&#039;event_title&#039;],\n\t\t);\n\t}\n\n\treturn $item_data;\n}, 10, 2 );\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-move-return-to-cart-and-edit-event-attendee-info-links\">Move Return to Cart and Edit Event Attendee Info Links<\/h2>\n\n\n\n<p>If you&#8217;d like to move the &#8220;Return to Cart&#8221; and &#8220;Edit Attendee Info&#8221; links to a different place on your WooCommerce checkout page, use the code below to get started. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/images.theeventscalendar.com\/kb\/uploads\/2020\/03\/add-return-to-cart-and-edit-attendee-info-links.png\" alt=\"Return to cart and Edit attendee info link locations\" class=\"wp-image-1946217\"\/><figcaption class=\"wp-element-caption\">Add the Return to Cart and Edit Attendee Info links to the WooCommerce Checkout page when reviewing your order<br><br><\/figcaption><\/figure>\n\n\n\n<p>Before adding the custom code below, please check out our guides:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/theeventscalendar.com\/knowledgebase\/k\/best-practices-for-implementing-custom-code-snippets\/\" target=\"_blank\" rel=\"noreferrer noopener\">Best Practices for Implementing Custom Code Snippets<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/theeventscalendar.com\/knowledgebase\/k\/customizing-template-files-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">Customizations<\/a><\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_action(&#039;init&#039;, &#039;domain_move_checkout_links&#039;, 40);\n\nfunction domain_move_checkout_links() {\n\t$TPCommerce_Object = Tribe__Tickets_Plus__Commerce__WooCommerce__Main::get_instance();\n\tremove_action( &#039;woocommerce_checkout_before_order_review&#039;, array( $TPCommerce_Object, &#039;add_checkout_links&#039; ) );\n\tadd_action( &#039;after_checkout_logged_in&#039;, array( $TPCommerce_Object, &#039;add_checkout_links&#039; ) );\n}\n\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-removing-attendee-details-from-the-order-details-page\">Removing Attendee Details from the Order Details Page<\/h2>\n\n\n\n<p>If you&#8217;d prefer to remove the attendee information from the order details, you can add the following snippet to your theme&#8217;s functions.php file:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;tribe_tickets_plus_woo_meta_data_enabled&#039; , &#039;__return_false&#039; );\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-altering-woocommerce-data-on-the-order-details-page\">Altering WooCommerce Data on the Order Details Page<\/h2>\n\n\n\n<p>You can use the following filters to alter or add to the WooCommerce meta details:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nfunction tec_test_woo_meta_data_filter( $data ) {\n  \/\/ Modify anything from the $data here\n  return $data;\n}\n\nadd_filter( &#039;tribe_tickets_plus_woo_meta_data_filter&#039;,&#039;tec_test_woo_meta_data_filter&#039; );\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-for-developers\">For Developers<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>woocommerce_cart_item_name<\/li>\n\n\n\n<li><a href=\"https:\/\/docs.theeventscalendar.com\/reference\/functions\/tribe_events_get_ticket_event\/\" target=\"_blank\" rel=\"noreferrer noopener\">tribe_events_get_ticket_event<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.theeventscalendar.com\/reference\/functions\/tribe_is_event\/\" target=\"_blank\" rel=\"noreferrer noopener\">tribe_is_event<\/a><\/li>\n\n\n\n<li>woocommerce_add_cart_item_data<\/li>\n\n\n\n<li>woocommerce_get_item_data<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>When using Event Tickets Plus with WooCommerce, the default checkout flow works well out of the box \u2014 but you may want to tailor it to better fit your event setup. This article covers several common customizations. Each customization uses a short PHP snippet or a settings change. Redirect &#8216;Get Tickets&#8217; Directly to WooCommerce Checkout&#8230;<\/p>\n","protected":false},"author":82,"featured_media":1955565,"comment_status":"open","ping_status":"open","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,59,309],"tags":[25,58,106],"stellar-product-taxonomy":[156],"class_list":["post-1967984","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-customizing","category-php-function-snippets","category-woocommerce","tag-customizations","tag-php","tag-woocommerce","stellar-product-taxonomy-event-tickets-plus"],"acf":[],"taxonomy_info":{"category":[{"value":24,"label":"Customizations"},{"value":59,"label":"PHP Functions &amp; Snippets"},{"value":309,"label":"WooCommerce"}],"post_tag":[{"value":25,"label":"Customizations"},{"value":58,"label":"PHP"},{"value":106,"label":"WooCommerce"}],"stellar-product-taxonomy":[{"value":156,"label":"Event Tickets Plus"}]},"featured_image_src_large":["https:\/\/images.theeventscalendar.com\/kb\/uploads\/2023\/02\/social-share-1024x538.png",1024,538,true],"author_info":{"display_name":"Collins Kiprono","author_link":"https:\/\/theeventscalendar.com\/knowledgebase\/author\/collins\/"},"comment_info":0,"category_info":[{"term_id":24,"name":"Customizations","slug":"customizing","term_group":0,"term_taxonomy_id":24,"taxonomy":"category","description":"","parent":0,"count":157,"filter":"raw","term_order":"0","cat_ID":24,"category_count":157,"category_description":"","cat_name":"Customizations","category_nicename":"customizing","category_parent":0},{"term_id":59,"name":"PHP Functions &amp; Snippets","slug":"php-function-snippets","term_group":0,"term_taxonomy_id":59,"taxonomy":"category","description":"","parent":24,"count":127,"filter":"raw","term_order":"0","cat_ID":59,"category_count":127,"category_description":"","cat_name":"PHP Functions &amp; Snippets","category_nicename":"php-function-snippets","category_parent":24},{"term_id":309,"name":"WooCommerce","slug":"woocommerce","term_group":0,"term_taxonomy_id":309,"taxonomy":"category","description":"","parent":46,"count":8,"filter":"raw","term_order":"0","cat_ID":309,"category_count":8,"category_description":"","cat_name":"WooCommerce","category_nicename":"woocommerce","category_parent":46}],"tag_info":[{"term_id":25,"name":"Customizations","slug":"customizations","term_group":0,"term_taxonomy_id":25,"taxonomy":"post_tag","description":"","parent":0,"count":102,"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":78,"filter":"raw","term_order":"0"},{"term_id":106,"name":"WooCommerce","slug":"woocommerce","term_group":0,"term_taxonomy_id":106,"taxonomy":"post_tag","description":"","parent":26,"count":16,"filter":"raw","term_order":"0"}],"_links":{"self":[{"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1967984","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\/82"}],"replies":[{"embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/comments?post=1967984"}],"version-history":[{"count":8,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1967984\/revisions"}],"predecessor-version":[{"id":1968802,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/posts\/1967984\/revisions\/1968802"}],"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=1967984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/categories?post=1967984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/tags?post=1967984"},{"taxonomy":"stellar-product-taxonomy","embeddable":true,"href":"https:\/\/theeventscalendar.com\/knowledgebase\/wp-json\/wp\/v2\/stellar-product-taxonomy?post=1967984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}