Forked from andrasguseo/show-event-details-on-cart.php
Last active
July 4, 2023 08:47
-
-
Save darookee/9d89766c720691861516679d036f15fb to your computer and use it in GitHub Desktop.
Show event title and date on WooCommerce cart page
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_filter( 'woocommerce_cart_item_name', 'krbu_event_title', 10, 3 ); | |
function krbu_event_title($title, $values, $cart_item_key) { | |
$ticket_meta = get_post_meta($values['product_id']); | |
$event_id = absint($ticket_meta['_tribe_wooticket_for_event'][0]); | |
$venue_id = tribe_get_venue_id($event_id); | |
if ($event_id) { | |
$eventLink = get_permalink($event_id); | |
if (!stristr($title, $eventLink)) { | |
$title = sprintf( '%s for <a href="%s" target="_blank"><strong>%s</strong></a> on %s', $title, $eventLink, get_the_title($event_id), tribe_get_start_date($event_id)); | |
if ($venue_id) { | |
$venue = tribe_get_venue_details($venue_id); | |
$title = sprintf('%s at %s<br /><small>%s</small>', $title, $venue['linked_name'], $venue['address']); | |
} | |
} | |
} | |
return $title; | |
} |
Alternatively one could use the woocommerce_cart_item_remove_link
filter to fix this:
add_filter( 'woocommerce_cart_item_remove_link', 'krbu_event_title_remove_link', 10, 3 );
function krbu_event_title_remove_link($remove_link, $cart_item_key) {
if (null === WC()->cart) {
wc_load_cart();
}
if (null === WC()->cart) {
return $remove_link;
}
$cart_item = WC()->cart->get_cart_item( $cart_item_key );
$_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );
return sprintf(
'<a href="%s" class="remove" aria-label="%s" data-product_id="%s" data-product_sku="%s">×</a>',
esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
sprintf( esc_attr__( 'Remove %s', 'woocommerce' ), $_product->get_name() ),
esc_attr( $product_id ),
esc_attr( $_product->get_sku() )
);
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
When using 'Avada' the
$title
is also used inside thearia-label
of the 'Remove'x
and is not properly escaped. The original code looks like this:To fix this one could replace this line:
with this
which will insert the original product name into the label.