Tematy

⌘K
  1. Tematy
  2. Fragmenty kodu

Fragmenty kodu

To jest Poziom deweloperski dokument. Jeśli nie jesteś zaznajomiony z kodem/szablonami i rozwiązywaniem potencjalnych konfliktów, skontaktuj się z programistą zaznajomionym z FooEvents i/lub WooCommerce.

Ważne, przeczytaj najpierw #

Te fragmenty są dostarczane jako uprzejmość i nie stanowią części oferty produktów FooEvents. Są one uważane za dostosowania i nie są oficjalnie obsługiwane przez FooEvents. W związku z tym nie zapewniamy wsparcia dla snippetów i dostosowań zgodnie z naszym Warunki świadczenia usług. Używaj na własne ryzyko.

Automatycznie kompletuj zamówienia #

Dzięki temu bilety będą automatycznie wysyłane po otrzymaniu płatności, zamiast konieczności ręcznego uzupełniania zamówienia. Upewnij się, że produkty wydarzenia są ustawione na "Wirtualny" i "Do pobrania", jak wyjaśniono w naszym dokumentacja pomocyw przeciwnym razie kolejność nie będzie zakończy się automatycznie, nawet jeśli dokonano płatności.

Dodaj następujący kod do motywu podrzędnego functions.php lub za pośrednictwem wtyczki, która umożliwia dodawanie niestandardowych funkcji, takich jak Fragmenty kodu wtyczka. Unikaj dodawania niestandardowego kodu bezpośrednio do motywu nadrzędnego functions.php ponieważ zostanie on nadpisany podczas aktualizacji motywu.

Można również zmienić status "Completed" na inny status zamówienia, taki jak "Processing".

/**
 * Automatyczne wypełnianie wszystkich zleceń WooCommerce.
 */
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) {
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( 'completed' );
}

Pokaż imię i nazwisko oraz adres e-mail uczestnika w wiadomości e-mail administratora nowego zamówienia. #

Dodaj następujący fragment kodu do motywu functions.php plik. Możesz zmienić wiadomość e-mail, w której jest ona wyświetlana, używając innej hak.

.

[php]
add_action( 'woocommerce_email_customer_details', 'fooevents_display_attendee_details_in_new_order_email', 10 , 4);
function fooevents_display_attendee_details_in_new_order_email($order, $sent_to_admin, $plain_text, $email){
    echo "<h3>Szczegóły dotyczące uczestników</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets as $event) {
        foreach($event as $ticket) {
            echo "<p>";
            echo '<strong>Imię</strong>: '.$ticket['WooCommerceEventsAttendeeName']'.<br />';
            echo '<strong>Nazwisko</strong>: '.$ticket['WooCommerceEventsAttendeeLastName']'.<br />';
            echo '<strong>Adres e-mail</strong>: '.$ticket['WooCommerceEventsAttendeeEmail']'.<br />';
            echo "</p>";
        }
    }
}

Wyświetlanie wszystkich niestandardowych pól uczestników bez etykiet w wiadomości e-mail administratora nowego zamówienia. #

Dodaj następujący fragment kodu do motywu functions.php plik. Możesz zmienić wiadomość e-mail, w której jest ona wyświetlana, używając innej hak.

.

[php]
add_action( 'woocommerce_email_customer_details', 'fooevents_display_attendee_details_in_new_order_email', 10 , 4);
function fooevents_display_attendee_details_in_new_order_email($order, $sent_to_admin, $plain_text, $email){
    echo "<h3>Szczegóły dotyczące uczestników</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets as $event) {
        foreach($event as $ticket) {
            echo "<p>";
            echo '<strong>Imię</strong>: '.$ticket['WooCommerceEventsAttendeeName']'.<br />';
            echo '<strong>Nazwisko</strong>: '.$ticket['WooCommerceEventsAttendeeLastName']'.<br />';
            echo '<strong>Adres e-mail</strong>: '.$ticket['WooCommerceEventsAttendeeEmail']'.<br />';
            foreach ($ticket['WooCommerceEventsCustomAttendeeFields'] as $caf) {
                 echo $caf.'<br />';
            }
            echo "</p>";
        }
    }
}

Wyświetlanie niestandardowych pól uczestników z etykietami w wiadomości e-mail administratora nowego zamówienia #

Dodaj następujący fragment kodu do motywu functions.php plik. Możesz zmienić wiadomość e-mail, w której jest ona wyświetlana, używając innej hak. Upewnij się, że zastąpiłeś "ovsxtmynwagotamjqieq" i "ruzwhgbuhzuzzdwnnaxe" w przykładowym kodzie swoim własnym niestandardowym kodem pola uczestnika. Informacje te można znaleźć, edytując bilet i szukając każdego niestandardowego pola uczestnika w sekcji "Pola niestandardowe". Będziesz musiał dodać każde niestandardowe pole uczestnika i jego etykietę indywidualnie.

.

[php]
add_action( 'woocommerce_email_customer_details', 'fooevents_display_attendee_details_in_new_order_email', 10 , 4);
function fooevents_display_attendee_details_in_new_order_email($order, $sent_to_admin, $plain_text, $email){
    echo "<h3>Szczegóły dotyczące uczestników</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets as $event) {
        foreach($event as $ticket) {
            echo "<p>";
            echo '<strong>Imię</strong>: '.$ticket['WooCommerceEventsAttendeeName']'.<br />';
            echo '<strong>Nazwisko</strong>: '.$ticket['WooCommerceEventsAttendeeLastName']'.<br />';
            echo '<strong>Adres e-mail</strong>: '.$ticket['WooCommerceEventsAttendeeEmail']'.<br />';
            echo '<strong>Urodziny</strong>: '.$ticket['WooCommerceEventsCustomAttendeeFields']['fooevents_custom_ovsxtmynwagotamjqieq']'.<br />';
            echo '<strong>Ulubiona piosenka</strong>: '.$ticket['WooCommerceEventsCustomAttendeeFields']['fooevents_custom_ruzwhgbuhzuzzdwnnaxe']'.<br />';
            echo "</p>";
        }
    }
}

Wyświetlanie godziny rozpoczęcia wydarzenia na liście wydarzeń #

Dodaj następujący fragment kodu do motywu functions.php plik. Nadaj styl wyświetlaniu godziny, dodając CSS dla klasy "fooevents-date".

Zmień umiejscowienie czasu, używając innego hak.

.

[php]
function fooevents_display_time_in_shop_listing() {
global $post;
if (is_front_page() || is_home() || is_shop() || is_product_category() || is_product_tag()) {
echo '<div class="fooevents-date">';
echo get_post_meta($post-&gt;ID, 'WooCommerceEventsHour', true).":";
echo get_post_meta($post-&gt;ID, 'WooCommerceEventsMinutes', true). ' ';
echo get_post_meta($post-&gt;ID, 'WooCommerceEventsPeriod', true);
echo '</div>';
}
}
add_filter( 'woocommerce_after_shop_loop_item_title', 'fooevents_display_time_in_shop_listing', 35 ); [/php]

Wyświetlanie zarejestrowanych uczestników w formie tabeli #

Dodaj następujący fragment kodu do motywu functions.php aby wyświetlić wszystkich zarejestrowanych uczestników wydarzenia w formacie siatki tabeli. Po dodaniu fragmentu kodu możesz użyć shortcode w następujący sposób:

[fooevents_attendees]

aby wyświetlić wszystkich uczestników dla wszystkich wydarzeń, lub w ten sposób:

[fooevents_attendees product_id=123]

gdzie "123" to identyfikator wydarzenia, dla którego chcesz wyświetlić listę uczestników.

function fooevents_display_attendees($attributes) {
 
  $product_id='';
  if(!empty($attributes['product_id'])) {
    $product_id = $attributes['product_id'];
  }

  $output ='';
  $args = array(
    'numberposts' =&gt; -1,
    'posts_per_page' =&gt; -1,
    'post_type' =&gt; 'event_magic_tickets',
    'meta_query' =&gt; array(
      'relation' =&gt; 'OR',
      array(
        'key' =&gt; 'WooCommerceEventsProductID',
        'value' =&gt; $product_id,
        'compare' =&gt; 'LIKE'
      )
    )
  );

   $the_query = new WP_Query( $args );

  if( $the_query-&gt;have_posts() ):
    while ( $the_query-&gt;have_posts() ) : $the_query-&gt;the_post();
    $postid = $the_query-&gt;post-&gt;ID;
     
      // wyprowadzenie wszystkich wyników - DOSTOSUJ DO SWOICH UPODOBAŃ
      $output .= "<tr>";
      $output .= "<td>".get_the_title()."</td>";
      $output .= "<td>".get_post_meta($postid, 'WooCommerceEventsPurchaserFirstName', true)".</td>";
      $output .= "<td>".get_post_meta($postid, 'WooCommerceEventsPurchaserLastName', true)".</td>";
      $output .= "</tr>";
         
    endwhile;
  endif;
  wp_reset_query();
  $output ="<table>".$output".</table>";
  return $output;
   
}
add_shortcode("fooevents_attendees", "fooevents_display_attendees");
[/php]

Wyświetlanie daty wydarzenia przed tytułem na stronie produktu #

Zmień umiejscowienie daty, używając innego hak.

.

[php]
function fooevents_display_date_on_single() {
  global $post;
  $product = wc_get_product( $post-&gt;ID );
  $start_date = $product-&gt;get_meta( 'WooCommerceEventsDate' );
  $end_date = $product-&gt;get_meta( 'WooCommerceEventsEndDate' );
  if ( $end_date ) {
    printf(
      '<h3>%s</h3>',
      esc_html( $start_date . ' - ' . $end_date )
    );
  } else if( $start_date ) {
    printf(
      '<h3>%s</h3>',
      esc_html( $start_date )
    );
  }
}
add_action( 'woocommerce_single_product_summary', 'fooevents_display_date_on_single' );

Jeśli chcesz, aby data wydarzenia była dostępna jako shortcode, możesz dodać następującą linię poniżej funkcji:

add_shortcode( 'fooevents_date_on_single', 'fooevents_display_date_on_single');

Następnie można użyć shortcode [fooevents_date_on_single] aby wyświetlić datę wydarzenia na stronie.

Zastąpienie ikony miejsca na planie miejsc innym obrazem #

Zmodyfikuj poniższy fragment kodu CSS, dodając adres URL do innego obrazu, którym chcesz zastąpić domyślny obraz siedzenia dla wszystkich miejsc. Dodaj zmodyfikowany fragment kodu do niestandardowego pliku CSS motywu.

#fooevents_seating_dialog .fooevents_seating_chart_view_row span {
  background-image: url(../images/seat.svg);
}

Usuń ikonę miejsca na planie miejsc, aby miejsca były wyświetlane jako boksy. #

#fooevents_seating_dialog .fooevents_seating_chart_view_row span {
  background-image: none;
}

Zmiana kierunku numerów miejsc na planie miejsc #

#fooevents_seating_dialog .fooevents_seating_chart_view_row {
  display: flex;
  flex-direction: row-reverse;
  justify-content: flex-end;
}

Pokaż miejsca nieparzyste po prawej stronie, a parzyste po lewej. #

#fooevents_seating_dialog .fooevents_seating_chart_view_row > span:nth-of-type(even) {
  float: left;
}

Wyświetlanie miejsc na środku tabeli miejsc #

[css]
#fooevents_seating_dialog .fooevents_seating_chart_view_row_name,
#fooevents_seating_dialog .fooevents_seating_chart_view_row {
  text-align: center;
}
[/css]

Plan miejsc powinien przewijać się poziomo zamiast wyświetlać miejsca w następnym rzędzie. #

Może to być przydatne, jeśli masz wiele miejsc w rzędzie i chcesz, aby były one wyświetlane obok siebie zamiast w następnym rzędzie, jeśli nie mieszczą się w jednym wierszu.

#fooevents_seating_dialog .fooevents_seating_chart_view_row {
  overflow-x: scroll;
  white-space: nowrap;
}

Wyświetlanie siatki kalendarza na komputerach stacjonarnych i listy tygodni kalendarza na urządzeniach mobilnych. #

Dodaj dwa skróty kalendarza na stronie lub w poście, w którym chcesz wyświetlić swój kalendarz. Pierwszy shortcode wyświetli siatkę kalendarza i powinien wyglądać następująco:

[fooevents_calendar id="desktop"]

Drugi shortcode wyświetli listę tygodni kalendarza i powinien wyglądać następująco:

[fooevents_calendar id="mobile" defaultView="listWeek"]

Dodaj następujący fragment kodu CSS do niestandardowego pliku CSS motywu. Upewnij się, że wartość selektora CSS ID jest taka sama jak wartość atrybutu "id" określonego w kodzie skróconym. Możesz dostosować właściwość "max-width" do rozmiaru ekranu, na którym ma być wyświetlana lista tygodni kalendarza, a siatka kalendarza ma być ukryta.

#desktop_fooevents_calendar {
  display: block;
}
    
#mobile_fooevents_calendar {
  display: none;
}
    
@media screen and (max-width: 600px) {
  #desktop_fooevents_calendar {
    display: none;
  }
    
  #mobile_fooevents_calendar {
    display: block;
  }    
}

Zmiana położenia ikony Kopiuj szczegóły kupującego #

Poniższy fragment kodu spowoduje wyrównanie przycisku kopiowania do prawej strony etykiety imienia:

.fooevents-copy-from-purchaser {
	float: right;
	margin-bottom:-1.7em
}

Jeśli nie używasz etykiet, a raczej symboli zastępczych, użyj poniższego fragmentu kodu:

.fooevents-copy-from-purchaser {
	float: right;
	margin-top:-2em
}

Pokaż zakładkę "Szczegóły wydarzenia" jako pierwszą na stronie wydarzenia. #

Dodaj następujący fragment kodu do motywu functions.php plik.

add_filter( 'woocommerce_product_tabs', 'reorder_tabs', 98 );
function reorder_tabs( $tabs ) {

    $tabs['woocommerce_events']['priority'] = 1;
    return $tabs;

}

Przekieruj wszystkie przyciski "Dodaj do koszyka" na strony produktów. #

Jeśli produkt jest produktem prostym, domyślnie przycisk "Dodaj do koszyka" automatycznie doda produkt do koszyka klienta. W przypadku korzystania z rozszerzenia FooEvents Bookings może być wymagane, aby klienci najpierw przeszli do strony produktu, aby wybrać datę i miejsce rezerwacji. Poniższy fragment kodu zapewni, że po kliknięciu przycisku "Dodaj do koszyka" dla prostych produktów, użytkownik zostanie przekierowany na stronę produktu.

add_filter( 'woocommerce_loop_add_to_cart_link', 'fooevents_modify_add_to_cart_button_url', 10, 2 );
function fooevents_modify_add_to_cart_button_url( $button, $product ) {
    if (is_product_category() || is_shop()) {
        $button_text = $product-&gt;add_to_cart_text();
        $button_link = $product-&gt;get_permalink();
        $button = '<a class="button" href="/pl/' . $button_link . '/">' . $button_text . '</a>';
        return $button;
    }
}

Wyświetla FREE, jeśli cena wydarzenia jest ustawiona na zero (0). #

Dodaj następujący fragment kodu do motywu functions.php jeśli chcesz zmienić wydarzenia i produkty z ceną "0" na "FREE". Możesz również zastąpić słowo "FREE" innym słowem lub frazą lub pozostawić je puste, jeśli nie chcesz, aby cokolwiek było wyświetlane.

add_filter( 'woocommerce_get_price_html', 'wp_price_free_zero_empty', 100, 2 );
function wp_price_free_zero_empty( $price, $product ) {
	 if ( '' === $product->get_price() || 0 == $product->get_price() ) {
		$price = 'FREE';
	}
	return $price;
}

Wyświetlanie produktów i wariantów (biletów) w formacie siatki tabeli #

Dodaj następujący fragment kodu do motywu functions.php aby wyświetlać produkty i warianty w formacie siatki tabeli na stronie wydarzenia/produktu zamiast domyślnej listy rozwijanej. Każda opcja biletu zostanie wyświetlona w nowym wierszu i będzie miała własny selektor ilości.

Uwaga: Ten fragment kodu nie jest kompatybilny z aplikacją FooEvents Siedzenie i FooEvents Rezerwacje selektory strony produktu.

selektory strony produktu.

[php]
/**
 * Wyświetlanie odmian w formacie tabeli.
 */

function woocommerce_variable_add_to_cart() {

	global $product, $post;

	// Wprowadź oddzieloną przecinkami listę identyfikatorów produktów, które powinny wyświetlać odmiany w formacie tabeli. Pozostaw puste, aby wyświetlić wszystkie produkty (np. array() )
	$products = array( );

	if ( in_array( $post-&gt;ID, $products ) || empty( $products ) ) {

		$variations = find_valid_variations();

		// Sprawdź, czy ustawiona jest specjalna meta "price_grid", jeśli tak, załaduj domyślny szablon.
		if ( get_post_meta( $post-&gt;ID, 'price_grid', true ) ) {

			// Enqueue variation scripts.
			wp_enqueue_script( 'wc-add-to-cart-variation' );

			// Załaduj szablon
			wc_get_template(
				'single-product/add-to-cart/variable.php',
				array(
					'available_variations' =&gt; $product-&gt;get_available_variations(),
					'attributes' =&gt; $product-&gt;get_variation_attributes(),
					'selected_attributes' =&gt; $product-&gt;get_variation_default_attributes(),
				)
			);

			return;
		}
		// Super, zróbmy własny szablon!
		?&gt;
			<table class="variations variations-grid" cellspacing="0">
				<tbody>

			<?php
			$variation = 0;
			foreach ( $variations as $key => $value ) {
				if ( ! $value['variation_is_visible'] ) {
					continue;
				}
				if ( $variation != $value['variation_id'] ) {

					?>

					<tr>
						<td>
						<?php

						foreach ( $value['attributes'] as $key => $val ) {
							$val = str_replace( array( '-', '_' ), ' ', $val );
							printf( '<div class="attr attr-%s">%s</div>', $key, ucwords( $val ) );
						}
						?>
						</td>
						<td>
						<?php echo $value['price_html']; ?>
						</td>

						<?php if ( $value['is_in_stock'] ) { ?>
							<form class="cart"  action="/pl//?php%20echo%20esc_url(%20$product-add_to_cart_url()%20);%20?" method="post" enctype='multipart/form-data' data-trp-original-action="<?php echo esc_url( $product->add_to_cart_url() ); ?>">
								<td id="variation_<?php echo $value['variation_id']; ?>">
									.
										<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E%0A%09%09%09%09%09%09%09%09%09%09jQuery(document).ready(function(%24)%7B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22step%22%2C%20%3C%3Fphp%20echo%20%24variation_group_of_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22value%22%2C%20%3C%3Fphp%20echo%20%24variation_group_of_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22min%22%2C%20%3C%3Fphp%20echo%20%24variation_minimum_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%09%24(%20%22%23variation_%3C%3Fphp%20echo%20%24value%5B'variation_id'%5D%3B%20%3F%3E%20.qty%22%20).attr(%20%22max%22%2C%20%3C%3Fphp%20echo%20%24variation_maximum_quantity%3B%20%3F%3E%20)%3B%0A%09%09%09%09%09%09%09%09%09%09%7D)%3B%0A%09%09%09%09%09%09%09%09%09%09%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />									
									<?php } ?>
								</td>
								<td>
									<?php
									if ( ! empty( $value['attributes'] ) ) {
										foreach ( $value['attributes'] as $attr_key => $attr_value ) {
											?>
											<input type="hidden" name="<?php echo $attr_key; ?>" value="<?php echo $attr_value; ?>">
											<?php
										}
									}
									?>
									<button type="submit" class="single_add_to_cart_button btn btn-primary"><span class="glyphicon glyphicon-tag"></span> Dodaj do koszyka</button>
								</td>
								<input type="hidden" name="variation_id" value="<?php echo $value['variation_id']; ?>" />
								<input type="hidden" name="product_id" value="<?php echo esc_attr( $post->ID ); ?>" />
								<input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $post->ID ); ?>" />
							<input type="hidden" name="trp-form-language" value="pl"/></form>
							<?php } else { ?>
								<td colspan="2">
									<p class="stock out-of-stock"><?php _e( 'This item is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
								</td>
							<?php } ?>
					</tr>
					<?php
					$variation = $value['variation_id'];
				}
			}
			?>
			</tbody>
			</table>


		<?php
	} else {

		// Enqueue variation scripts.
		wp_enqueue_script( 'wc-add-to-cart-variation' );

		// Load the template
		wc_get_template(
			'single-product/add-to-cart/variable.php',
			array(
				'available_variations' => $product-&gt;get_available_variations(),
				'attributes' =&gt; $product-&gt;get_variation_attributes(),
				'selected_attributes' =&gt; $product-&gt;get_variation_default_attributes(),
			)
		);
		return;
	}
}

function find_valid_variations() {
	global $product, $post;

		$variations = $product-&gt;get_available_variations();
		$attributes = $product-&gt;get_attributes();
		$new_variants = array();

		// Pętla przez wszystkie warianty
	foreach ( $variations as $variation ) {

		// Przejrzyj atrybuty.

		// 1. jeśli oba są jawnie ustawione, jest to prawidłowa wariacja
		// 2. jeśli jeden z nich nie jest ustawiony, oznacza to, że nie istnieje i musimy "utworzyć" pozostałe.

		$valid = true; // jak dotąd
		foreach ( $attributes as $slug =&gt; $args ) {
			if ( array_key_exists( "attribute_$slug", $variation['attributes'] ) &amp;&amp; ! empty( $variation['attributes'][ "attribute_$slug" ] ) ) {
				// Istnieje

			} else {
				// Nie istnieje, utwórz
				$valid = false; // zawiera 'any'
				// przeprowadź pętlę przez wszystkie opcje dla atrybutu "ANY" i dodaj każdą z nich
				foreach ( explode( '|', $attributes[ $slug ]['value'] ) as $attribute ) {
					$attribute = trim( $attribute );
					$new_variant = $variation;
					$new_variant['attributes'][ "attribute_$slug" ] = $attribute;
					$new_variants[] = $new_variant;
				}
			}
		}

		// Zawiera on WSZYSTKIE ustawione atrybuty i sam w sobie jest "ważnym" wariantem.
		if ( $valid ) {

			$new_variants[] = $variation;
		}
	}

		return $new_variants;
}
[/php]

Dodaj obsługę dziennych godzin rozpoczęcia i zakończenia do motywów biletów #

Od wersji 1.5.5 z FooEvents Wielodniowy wtyczki, można wybrać różne godziny rozpoczęcia i zakończenia dla każdego dnia wydarzenie wielodniowe. Obsługa tej funkcji została również dodana do wszystkich Motywy biletów FooEvents. Proszę Postępuj zgodnie z poniższymi instrukcjami aby zaktualizować istniejący szablon biletu. Jeśli korzystasz z niestandardowego szablonu biletu i nie jesteś w stanie zastąpić szablonu biletu zaktualizowaną wersją, dodaj poniższy fragment kodu do szablonu biletu, aby dodać obsługę czasu rozpoczęcia i zakończenia. [php]

<!-- MULTI-DAY DETAILS -->
										

			<strong><?php printf( __( '%1$s %2$d: ', 'woocommerce-events' ), $ticket['dayTerm'], $x ); ?></strong>
			<?php echo esc_attr( $date ); ?><br /> 
			.
				 ?) ? ' ' . $ticket['WooCommerceEventsSelectDatePeriod'][ $y ] : ''; ?&gt;.
			
			
				.	
		<br />										
		

Domyślne przyciski WooCommerce Dodaj do koszyka wyświetlane na stronach z listą sklepów automatycznie dodają produkt do koszyka i przekierowują na stronę koszyka. W przypadku korzystania z rezerwacji FooEvents preferowane może być przekierowanie użytkownika przez stronę produktu, aby mógł najpierw dokonać wyboru miejsca i czasu rezerwacji przed przejściem do strony koszyka. Poniższy fragment kodu zastąpi link dodawania do koszyka linkiem do strony produktu. Dzięki temu użytkownik będzie mógł dokonać odpowiedniego wyboru rezerwacji na stronie produktu przed przejściem do koszyka lub strony kasy.

/**
* @snippet Zmień przycisk WooCommerce "Dodaj do koszyka" na "Zobacz produkt
* @source https://www.wptechnic.com/?p=4615
* @author Muhammad Tamzid
* @compatible WC 4.3.1
*/
// Zmień przycisk WooCommerce "Dodaj do koszyka" na "Wyświetl produkt
add_filter( 'woocommerce_loop_add_to_cart_link', 'wpt_custom_view_product_button', 10, 2 );
function wpt_custom_view_product_button( $button, $product ) {
    // Ignorowanie w przypadku zmiennych produktów
    if ( $product-&gt;is_type( 'variable' ) ) {
        return $button;
    }
    // Tekst przycisku tutaj
    $button_text = __( 'Zarezerwuj bilet', 'woocommerce' );
    return '<a class="button wpt-custom-view-product-button" href="/pl/' . $product->get_permalink() . '/">' . $button_text . '</a>';
}

Wyświetlanie daty wydarzenia dla "pojedynczych" wydarzeń w koszyku i na stronie kasy. #

add_filter( 'woocommerce_cart_item_name', 'add_event_date_cart_checkout', 10, 3 );
function add_event_date_cart_checkout( $product_name, $cart_item, $cart_item_key ) {
	$product = $cart_item['data'];

	if ( $value = $product->get_meta( 'WooCommerceEventsDate' ) {
		$product_name .= '' . $value . '';
	}
	return $product_name;
}

Artykuły

Tagi , , , , , , , , , , , , , , , , , , ,