linkedin

Themen

⌘K
  1. /
  2. /
  3. Themen
  4. /

Code-Schnipsel

Dies ist eine Entwicklerebene Dokument. Wenn Sie mit Code/Vorlagen und der Lösung möglicher Konflikte nicht vertraut sind, wenden Sie sich bitte an einen Entwickler, der mit FooEvents und/oder WooCommerce vertraut ist.

Wichtig, bitte zuerst lesen #

Diese Snippets werden aus Höflichkeit zur Verfügung gestellt und sind nicht Teil des FooEvents-Produktangebots. Sie gelten als Anpassungen und werden nicht offiziell von FooEvents unterstützt. Daher bieten wir keinen Support für Snippets und Anpassungen im Sinne unserer Bedingungen der Dienstleistung. Die Verwendung erfolgt auf eigene Gefahr.

Automatisch Aufträge abschließen #

Auf diese Weise werden die Tickets automatisch nach Zahlungseingang verschickt, ohne dass Sie die Bestellung manuell abschließen müssen. Bitte stellen Sie sicher, dass Ihre Veranstaltungsprodukte auf "Virtuell" und "Herunterladbar", wie in unserer Hilfe-Dokumentationansonsten wird der Auftrag wird nicht automatisch abgeschlossen, auch wenn die Zahlung erfolgt ist.

Fügen Sie den folgenden Code in Ihr Child-Theme ein funktionen.php Datei oder über ein Plugin, das das Hinzufügen von benutzerdefinierten Funktionen ermöglicht, wie z. B. die Code-Schnipsel Plugin. Vermeiden Sie es, benutzerdefinierten Code direkt in das übergeordnete Theme einzufügen. funktionen.php Datei, da sie überschrieben wird, wenn Sie das Thema aktualisieren.

Sie können den Status "Abgeschlossen" auch in einen anderen Auftragsstatus wie "In Bearbeitung" ändern.

/**
 * Alle WooCommerce-Aufträge automatisch abschließen.
 */
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) {
    if ( ! 1TP14Bestellung_id ) {
        zurück;
    }

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

Zeigen Sie den Namen und die E-Mail-Adresse des Teilnehmers in der Verwaltungs-E-Mail des neuen Auftrags an. #

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei. Sie können die E-Mail, in der sie angezeigt wird, ändern, indem Sie eine andere Haken.

.

[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>Teilnehmer-Details</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets as $event) {
        foreach(1TP12Event as $ticket) {
            echo "<p>";
            echo '<strong>Vorname</strong>: '.$ticket['WooCommerceEventsAttendeeName'].'<br />';
            echo '<strong>Nachname</strong>: '.$ticket['WooCommerceEventsAttendeeLastName'].'<br />';
            echo '<strong>E-Mail Adresse</strong>: '.$ticket['WooCommerceEventsAttendeeEmail'].'<br />';
            echo "</p>";
        }
    }
}

Anzeige aller benutzerdefinierten Teilnehmerfelder ohne Beschriftung in der Verwaltungs-E-Mail für neue Aufträge #

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei. Sie können die E-Mail, in der sie angezeigt wird, ändern, indem Sie eine andere Haken.

.

[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>Teilnehmer-Details</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets as $event) {
        foreach(1TP12Event as $ticket) {
            echo "<p>";
            echo '<strong>Vorname</strong>: '.$ticket['WooCommerceEventsAttendeeName'].'<br />';
            echo '<strong>Nachname</strong>: '.$ticket['WooCommerceEventsAttendeeLastName'].'<br />';
            echo '<strong>E-Mail Adresse</strong>: '.$ticket['WooCommerceEventsAttendeeEmail'].'<br />';
            foreach ($ticket['WooCommerceEventsCustomAttendeeFields'] as $caf) {
                 echo $caf.'<br />';
            }
            echo "</p>";
        }
    }
}

Benutzerdefinierte Teilnehmerfelder mit Beschriftungen in der Verwaltungs-E-Mail für neue Aufträge anzeigen #

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei. Sie können die E-Mail, in der sie angezeigt wird, ändern, indem Sie eine andere Haken. Stellen Sie sicher, dass Sie "ovsxtmynwagotamjqieq" und "ruzwhgbuhzuzzdwnnaxe" im Beispielcode durch den Code für Ihr eigenes Teilnehmerfeld ersetzen. Sie finden diese Informationen, wenn Sie ein Ticket bearbeiten und im Abschnitt "Benutzerdefinierte Felder" nach jedem benutzerdefinierten Teilnehmerfeld suchen. Sie müssen jedes benutzerdefinierte Teilnehmerfeld und seine Bezeichnung einzeln hinzufügen.

.

[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>Teilnehmer-Details</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets as $event) {
        foreach(1TP12Event as $ticket) {
            echo "<p>";
            echo '<strong>Vorname</strong>: '.$ticket['WooCommerceEventsAttendeeName'].'<br />';
            echo '<strong>Nachname</strong>: '.$ticket['WooCommerceEventsAttendeeLastName'].'<br />';
            echo '<strong>E-Mail Adresse</strong>: '.$ticket['WooCommerceEventsAttendeeEmail'].'<br />';
            echo '<strong>Geburtstag</strong>: '.$ticket['WooCommerceEventsCustomAttendeeFields']['fooevents_custom_ovsxtmynwagotamjqieq']'.<br />';
            echo '<strong>Lieblingslied</strong>: '.$ticket['WooCommerceEventsCustomAttendeeFields']['fooevents_custom_ruzwhgbuhzuzzdwnnaxe']'.<br />';
            echo "</p>";
        }
    }
}

Startzeit der Veranstaltung in der Veranstaltungsliste anzeigen #

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei. Gestalten Sie die Anzeige der Uhrzeit, indem Sie CSS für die Klasse "fooevents-date" hinzufügen.

Ändern Sie die Platzierung der Uhrzeit, indem Sie eine andere Haken.

.

[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]

Anzeige der registrierten Teilnehmer in einem Tabellenformat #

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei, um alle registrierten Teilnehmer an Ihrer Veranstaltung in einem Tabellengitterformat auszugeben. Nach dem Hinzufügen des Codeschnipsels können Sie den Shortcode wie folgt verwenden:

[fooevents_attendees]

um alle Teilnehmer für alle Veranstaltungen anzuzeigen, oder wie folgt:

[fooevents_attendees product_id=123]

wobei "123" die ID der Veranstaltung ist, für die Sie die Teilnehmerliste anzeigen möchten.

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

  $output ='';
  $args = array(
    'AnzahlPosts' =&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'
      )
    )
  );

   $he_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;
     
      // Ausgabe aller Ergebnisse - CUSTOMIZE TO YOUR LIKING
      $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]

Anzeige des Veranstaltungsdatums vor dem Titel auf der Produktseite #

Ändern Sie die Platzierung des Datums durch Verwendung eines anderen Haken.

.

[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 ( 1TP12Ende_datum ) {
    printf(
      '<h3>%s</h3>',
      esc_html( 1TP12Startdatum . ' - ' . 1TP12Ende_datum )
    );
  } else if( $start_datum ) {
    printf(
      '<h3>%s</h3>',
      esc_html( $start_date )
    );
  }
}
add_action( 'woocommerce_single_product_summary', 'fooevents_display_date_on_single' );

Wenn Sie das Veranstaltungsdatum als Shortcode zur Verfügung stellen möchten, können Sie die folgende Zeile unterhalb der Funktion hinzufügen:

add_shortcode( 'fooevents_date_on_single', 'fooevents_display_date_on_single');

Dann können Sie den Shortcode [fooevents_date_on_single] um das Ereignisdatum auf der Seite anzuzeigen.

Ersetzen Sie das Sitzplatzsymbol auf dem Sitzplan durch ein anderes Bild #

Ändern Sie das folgende CSS-Codefragment, indem Sie die URL zu einem anderen Bild hinzufügen, das das Standardbild für alle Sitze ersetzen soll. Fügen Sie den geänderten Codeschnipsel in die benutzerdefinierte CSS-Datei Ihres Themes ein.

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

Entfernen Sie das Sitzplatzsymbol auf dem Sitzplan, damit die Plätze als Kästchen angezeigt werden. #

#fooevents_bestuhlung_dialog .fooevents_bestuhlung_grafik_ansicht_zeile span {
  background-image: none;
}

Ändern Sie die Richtung der Sitzplatznummern auf dem Sitzplan #

#fooevents_bestuhlung_dialog .fooevents_bestuhlung_diagramm_ansicht_zeile {
  Anzeige: flex;
  flex-direction: row-reverse;
  justify-content: flex-end;
}

Zeigen Sie ungerade Sitzplätze auf der rechten Seite und gerade Sitzplätze auf der linken Seite an. #

#fooevents_bestuhlung_dialog .fooevents_bestuhlung_diagramm_ansicht_zeile > span:nth-of-type(even) {
  float: links;
}

Sitzplätze in der Mitte des Sitzplans anzeigen #

[css]
#fooevents_bestuhlung_dialog .fooevents_bestuhlung_grafik_ansicht_zeile_name,
#fooevents_bestuhlung_dialog .fooevents_bestuhlung_diagramm_ansicht_zeile {
  text-align: zentriert;
}
[/css]

Den Sitzplan horizontal scrollen lassen, anstatt die Plätze in der nächsten Reihe anzuzeigen #

Dies kann nützlich sein, wenn Sie viele Sitze pro Reihe haben und diese nebeneinander statt in der nächsten Reihe angezeigt werden sollen, wenn sie nicht in eine Zeile passen.

#fooevents_bestuhlung_dialog .fooevents_bestuhlung_diagramm_ansicht_zeile {
  overflow-x: scroll;
  white-space: nowrap;
}

Anzeige eines Kalendergitters auf Desktops und einer Kalenderwochenliste auf Mobiltelefonen #

Fügen Sie zwei Kalender-Shortcodes auf der Seite oder dem Beitrag ein, auf der/dem Sie Ihren Kalender anzeigen möchten. Der erste Shortcode zeigt ein Kalendergitter an und sollte wie folgt aussehen:

[fooevents_calendar id="desktop"]

Der zweite Shortcode zeigt eine Kalenderwochenliste an und sollte wie folgt aussehen:

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

Fügen Sie das folgende CSS-Codefragment in die benutzerdefinierte CSS-Datei Ihres Themas ein. Stellen Sie sicher, dass der Wert des CSS-ID-Selektors mit dem Wert des Attributs "id" übereinstimmt, das Sie im Shortcode angegeben haben. Sie können die Eigenschaft "max-width" an die Bildschirmgröße anpassen, bei der Sie die Kalenderwochenliste anzeigen und das Kalendergitter ausblenden möchten.

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

Ändern Sie die Position des Symbols "Details des Käufers kopieren #

Mit dem folgenden Ausschnitt wird die Kopierschaltfläche rechts von der Beschriftung des Vornamens ausgerichtet:

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

Wenn Sie keine Beschriftungen, sondern Eingabeplatzhalter verwenden, benutzen Sie bitte den folgenden Codeschnipsel:

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

Zeigen Sie auf der Ereignisseite zuerst die Registerkarte "Ereignisdetails" an. #

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei.

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

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

}

Alle "In den Warenkorb"-Schaltflächen auf Produktseiten verweisen #

Wenn es sich bei einem Produkt um ein einfaches Produkt handelt, wird das Produkt über die Schaltfläche "In den Warenkorb" automatisch in den Warenkorb des Kunden gelegt. Wenn Sie die FooEvents Buchungserweiterung verwenden, kann es erforderlich sein, dass Ihre Kunden zuerst auf die Produktseite gehen, um das Buchungsdatum und den Termin auszuwählen. Das folgende Snippet stellt sicher, dass der Benutzer zur Produktseite weitergeleitet wird, wenn er auf die Schaltfläche "In den Warenkorb" für einfache Produkte klickt.

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="/de/' . $button_link . '/">' . $button_text . '</a>';
        return $button;
    }
}

Anzeige FREE, wenn der Ereignispreis auf Null (0) gesetzt ist #

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei, wenn Sie Ereignisse und Produkte mit einem Preis von "0" in "FREE" ändern möchten. Sie können das Wort "KOSTENLOS" auch durch ein anderes Wort oder eine andere Phrase ersetzen oder es leer lassen, wenn Sie nicht möchten, dass etwas angezeigt wird.

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;
}

Anzeige von Produkten und Variationen (Tickets) in einem Tabellengitterformat #

Fügen Sie den folgenden Codeschnipsel zu Ihrem Theme hinzu funktionen.php Datei, um Produkte und Variationen in einem Tabellengitterformat auf der Veranstaltungs-/Produktseite anstelle der Standard-Dropdown-Liste anzuzeigen. Jede Ticketoption wird in einer neuen Zeile aufgeführt und hat eine eigene Mengenauswahl.

Bitte beachten: Dieser Codeschnipsel ist nicht kompatibel mit dem FooEvents Sitzplätze und FooEvents Buchungen Selektoren für die Produktseite.

Selektoren für die Produktseite.

[php]
/**
 * Anzeige der Variationen in einem Tabellenformat.
 */

function woocommerce_variable_add_to_cart() {

	global $product, $post;

	// Geben Sie eine durch Komma getrennte Liste von Produkt-IDs ein, die Variationen im Tabellenformat anzeigen sollen. Leer lassen, um alle Produkte anzuzeigen (z.B. array())
	$products = array( );

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

		$variations = find_valid_variations();

		// Prüfen Sie, ob die spezielle 'price_grid'-Meta gesetzt ist, wenn ja, laden Sie die Standardvorlage.
		if ( get_post_meta( $post-&gt;ID, 'price_grid', true ) ) {

			// Variations-Skripte in die Warteschlange stellen.
			wp_enqueue_script( 'wc-add-to-cart-variation' );

			// Laden Sie die Vorlage
			wc_get_template(
				'single-product/add-to-cart/variable.php',
				array(
					'verfügbare_Variationen' =&gt; $product-&gt;get_available_variations(),
					'attributes' =&gt; $product-&gt;get_variation_attributes(),
					'selected_attributes' =&gt; $product-&gt;get_variation_default_attributes(),
				)
			);

			zurück;
		}
		// Cool, machen wir unsere eigene Vorlage!
		?&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="/de//?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> In den Warenkorb legen</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="de"/></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(),
				'ausgewählte_attribute' =&gt; $product-&gt;get_variation_default_attributes(),
			)
		);
		zurück;
	}
}

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

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

		// Schleife durch alle Varianten
	foreach ( $variations as $variation ) {

		// Durchsuchen Sie die Attribute.

		// 1. wenn beide explizit gesetzt sind, ist dies eine gültige Variation
		// 2. wenn eines nicht gesetzt ist, bedeutet das, dass wir die anderen "erstellen" müssen.

		$valid = true; // bis jetzt
		foreach ( $attributes as $slug =&gt; $args ) {
			if ( array_key_exists( "attribute_$slug", $variation['attributes'] ) &amp;&amp; ! empty( $variation['attributes'][ "attribute_$slug" ] ) ) {
				// Vorhanden

			} else {
				// Nicht vorhanden, erstellen
				$valid = false; // es enthält 'anys'
				// Schleife durch alle Optionen für das 'ANY'-Attribut, und jede hinzufügen
				foreach ( explode( '|', $attributes[ $slug ]['value'] ) as $attribute ) {
					$attribute = trim( $attribute );
					$new_variant = $variation;
					$new_variant['attributes'][ "attribute_$slug" ] = $attribute;
					$neue_Varianten[] = $neue_Variante;
				}
			}
		}

		// Dies enthält ALLE eingestellten Attribute und ist selbst eine "gültige" Variante.
		wenn ( $valid ) {

			$new_variants[] = $variation;
		}
	}

		return $new_variants;
}
[/php]

Fügen Sie Ihren Ticket-Themen Unterstützung für tägliche Start- und Endzeiten hinzu #

Ab der Version 1.5.5 der FooEvents Mehrtägig Plugin können Sie unterschiedliche Start- und Endzeiten für jeden Tag eines Jahres auswählen. mehrtägige Veranstaltung. Unterstützung für diese Funktion wurde auch in alle FooEvents Ticket-Themen. Bitte diese Anweisungen befolgen um ein bestehendes Ticket-Thema zu aktualisieren. Wenn Sie ein benutzerdefiniertes Ticket-Thema verwenden und nicht in der Lage sind, das Ticket-Thema durch die aktualisierte Version zu ersetzen, fügen Sie bitte den folgenden Codeschnipsel zu Ihrem Ticket-Thema hinzu, um Unterstützung für Start- und Endzeiten hinzuzufügen. [php]

<!-- MULTI-DAY DETAILS -->
										

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

Die standardmäßigen WooCommerce-Schaltflächen "In den Warenkorb", die auf den Seiten des Shops angezeigt werden, fügen automatisch ein Produkt zum Warenkorb hinzu und leiten zur Warenkorb-Seite weiter. Wenn Sie FooEvents Bookings verwenden, möchten Sie den Benutzer vielleicht lieber über die Produktseite leiten, damit er zunächst einen Termin und eine Uhrzeit für die Buchung auswählen kann, bevor er zur Warenkorbseite weitergeht. Das folgende Snippet ersetzt den "Add-to-cart"-Link durch einen Link auf die Produktseite. Dadurch wird sichergestellt, dass der Benutzer die entsprechende Buchungsauswahl auf der Produktseite treffen kann, bevor er zur Warenkorb- oder Kassenseite weitergeht.

/**
* @snippet WooCommerce Schaltfläche 'In den Warenkorb' in 'Produkt anzeigen' ändern
* @source https://www.wptechnic.com/?p=4615
* @Autor Muhammad Tamzid
* @compatible WC 4.3.1
*/
// Ändern Sie die Schaltfläche WooCommerce 'In den Warenkorb' in 'Produkt anzeigen'.
add_filter( 'woocommerce_loop_add_to_cart_link', 'wpt_custom_view_product_button', 10, 2 );
function wpt_custom_view_product_button( $button, $product ) {
    // Bei variablen Produkten ignorieren
    if ( $product-&gt;is_type( 'variable' ) ) {
        return $button;
    }
    // Text der Schaltfläche hier
    $button_text = __( 'Ticket buchen', 'woocommerce' );
    return '<a class="button wpt-custom-view-product-button" href="/de/' . $product->get_permalink() . '/">' . $button_text . '</a>';
}

Artikel

Tags , , , , , , , , , , , , , , , , , , ,