Codeknipsels

Dit is een voor ontwikkelaars document. Als u niet bekend bent met code/templates en het oplossen van potentiële conflicten, neem dan contact op met een ontwikkelaar die bekend is met FooEvents en/of WooCommerce.

Belangrijk, eerst lezen

Deze snippets worden geleverd als een hoffelijkheid en maken geen deel uit van de FooEvents productaanbod. Ze worden beschouwd als maatwerk en worden niet officieel ondersteund door FooEvents. Als zodanig bieden wij geen ondersteuning voor knipsels en aanpassingen volgens onze Servicevoorwaarden. Gebruik op eigen risico.

Bestellingen automatisch voltooien

Hierdoor worden tickets automatisch verzonden zodra de betaling is ontvangen in plaats van dat de bestelling handmatig moet worden voltooid. Zorg ervoor dat uw evenementproducten zijn ingesteld op "Virtueel" en "Download"zoals uitgelegd in onze helpdocumentatie, otherwise, the order will not complete automatically even if payment was made.

Voeg de volgende code toe aan het functies.php bestand of via een plugin waarmee aangepaste functies kunnen worden toegevoegd, zoals de Codeknipsels plugin. Vermijd het rechtstreeks toevoegen van aangepaste code aan het hoofdthema functies.php bestand, omdat het wordt overschreven wanneer je het thema bijwerkt.

Je kunt de status "Voltooid" ook wijzigen in een andere bestelstatus, zoals "Verwerking".

/**
 * @snippet       Programmatically Complete Paid WooCommerce Orders
 * @how-to        businessbloomer.com/woocommerce-customization
 * @author        Rodolfo Melogli, Business Bloomer
 * @testedwith    WooCommerce 9
 * @community     https://businessbloomer.com/club/
 */
 
add_filter( 'woocommerce_payment_complete_order_status', 'bbloomer_autocomplete_processing_orders', 9999 );
 
function bbloomer_autocomplete_processing_orders() {
	return 'completed';
}

Merk op dat het bovenstaande codefragment niet werkt met COD / BACS / Cheque-bestellingen als het totaalbedrag van de bestelling > 0 is. Bekijk de gratis plugin op deze pagina om dit op te lossen.

Toon de naam en het e-mailadres van de deelnemer in de beheerdersmail van de Nieuwe bestelling

Voeg het volgende codefragment toe aan uw thema's functies.php bestand. U kunt de e-mail waarin dit wordt weergegeven wijzigen door een andere haak.

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>Details deelnemers</h3>";
	$WooCommerceEventsOrderTickets = get_post_meta($order->get_id(), 'WooCommerceEventsOrderTickets', true);
	foreach($WooCommerceEventsOrderTickets as $event) {
		foreach($event as $ticket) {
			echo "<p>";
			echo '<strong>Voornaam</strong>: '.$ticket['WooCommerceEventsAttendeeName'].'<br />';
			echo '<strong>Achternaam</strong>: '.$icket['WooCommerceEventsAttendeeLastName'].'<br />';
			echo '<strong>E-mailadres</strong>: '.$icket['WooCommerceEventsAttendeeEmail'].'<br />';
			echo "</p>";
		}
	}
}

Toon alle aangepaste deelnemersvelden zonder labels in de beheere-mail Nieuwe bestelling

Voeg het volgende codefragment toe aan uw thema's functies.php bestand. U kunt de e-mail waarin dit wordt weergegeven wijzigen door een andere haak.

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>Details deelnemers</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets als $event) {
        foreach($event as $ticket) {
            echo "<p>";
            echo '<strong>Voornaam</strong>: '.$ticket['WooCommerceEventsAttendeeName'].'<br />';
            echo '<strong>Achternaam</strong>: '.$icket['WooCommerceEventsAttendeeLastName'].'<br />';
            echo '<strong>E-mailadres</strong>: '.$icket['WooCommerceEventsAttendeeEmail'].'<br />';
            foreach ($ticket['WooCommerceEventsCustomAttendeeFields'] als $caf) {
                 echo $caf.<br />';
            }
            echo "</p>";
        }
    }
}

Aangepaste deelnemersvelden met labels weergeven in de beheermail van de nieuwe bestelling

Voeg het volgende codefragment toe aan uw thema's functies.php bestand. U kunt de e-mail waarin dit wordt weergegeven wijzigen door een andere haak. Zorg ervoor dat je "ovsxtmynwagotamjqieq" en "ruzwhgbuhzuzzdwnnaxe" in de voorbeeldcode vervangt door jouw specifieke code voor het aangepaste aanwezigheidsveld. Je kunt deze informatie vinden als je een ticket bewerkt en naar elk aangepast aanwezigheidsveld zoekt in het gedeelte "Aangepaste velden". Je moet elk aangepast aanwezigheidsveld en het bijbehorende label afzonderlijk toevoegen.

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>Details deelnemers</h3>";
    $WooCommerceEventsOrderTickets = get_post_meta($order-&gt;get_id(), 'WooCommerceEventsOrderTickets', true);
    foreach($WooCommerceEventsOrderTickets als $event) {
        foreach($event as $ticket) {
            echo "<p>";
            echo '<strong>Voornaam</strong>: '.$ticket['WooCommerceEventsAttendeeName'].'<br />';
            echo '<strong>Achternaam</strong>: '.$icket['WooCommerceEventsAttendeeLastName'].'<br />';
            echo '<strong>E-mailadres</strong>: '.$icket['WooCommerceEventsAttendeeEmail'].'<br />';
            echo '<strong>Verjaardag</strong>: '.$ticket['WooCommerceEventsCustomAttendeeFields']['fooevents_custom_ovsxtmynwagotamjqieq'].'<br />';
            echo '<strong>Favoriete nummer</strong>: '.$ticket['WooCommerceEventsCustomAttendeeFields']['fooevents_custom_ruzwhgbuhzuzzdwnnaxe'].'<br />';
            echo "</p>";
        }
    }
}

De begintijd van een evenement weergeven op de evenementlijst

Voeg het volgende codefragment toe aan uw thema's functies.php bestand. Geef de tijd weer door CSS toe te voegen voor de klasse 'fooevents-date'.

Verander de plaatsing van de tijd door een andere haak.

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->ID, 'WooCommerceEventsHour', true).':';
echo get_post_meta($post->ID, 'WooCommerceEventsMinutes', true). ' ';
echo get_post_meta($post->ID, 'WooCommerceEventsPeriod', true);
echo '</div>';
}
}
add_filter( 'woocommerce_after_shop_loop_item_title', 'fooevents_display_time_in_shop_listing', 35 );

Geregistreerde deelnemers weergeven in een tabel

Voeg het volgende codefragment toe aan uw thema's functies.php bestand om alle geregistreerde bezoekers van je evenement in een tabelraster weer te geven. Nadat je het codefragment hebt toegevoegd, kun je de shortcode als volgt gebruiken:

[fooevents_attendees]

om alle aanwezigen voor alle evenementen weer te geven, of op deze manier:

[fooevents_attendees product_id=123]

waarbij "123" de ID is van het evenement waarvoor je de aanwezigheidslijst wilt weergeven.

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;
	 
		// output all findings - 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");

De evenementdatum voor de titel weergeven op de productpagina

Wijzig de plaatsing van de datum door een andere haak.

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' );

Als je de datum van het evenement beschikbaar wilt maken als een shortcode, kun je de volgende regel toevoegen onder de functie:

add_shortcode( "fooevents_date_on_single", "fooevents_display_date_on_single");

Dan kun je de shortcode [fooevents_date_on_single] om de datum van het evenement op de pagina weer te geven.

Vervang het stoelpictogram op de tafelschikking door een andere afbeelding

Wijzig het volgende CSS-codefragment door de URL toe te voegen aan een andere afbeelding die je wilt gebruiken ter vervanging van de standaardafbeelding van de stoel voor alle stoelen. Voeg het gewijzigde codefragment toe aan het CSS-bestand van je thema.

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

Verwijder het stoelpictogram op de tafelschikking zodat stoelen worden weergegeven als vakken

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

De richting van de stoelnummers op de tafelschikking wijzigen

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

Toon oneven genummerde zitplaatsen aan de rechterkant en even genummerde zitplaatsen aan de linkerkant

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

Zitplaatsen in het midden van de tafelschikking weergeven

#fooevents_seating_dialog .fooevents_seating_chart_view_row_name,
#fooevents_seating_dialog .fooevents_seating_chart_view_row {
	text-align: center;
}

Laat de tafelschikking horizontaal scrollen in plaats van stoelen in de volgende rij weer te geven

Dit kan handig zijn als je veel stoelen per rij hebt en je ze naast elkaar wilt weergeven in plaats van op de volgende rij als ze niet op één regel passen.

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

Toon een kalenderrooster op desktops en een kalenderweeklijst op mobiel

Voeg twee kalender shortcodes toe aan de pagina of post waar je je kalender wilt weergeven. De eerste shortcode geeft een kalenderrooster weer en moet er als volgt uitzien:

[fooevents_calendar id="desktop"]

De tweede shortcode geeft een kalenderweeklijst weer en zou er als volgt uit moeten zien:

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

Voeg het volgende CSS-codefragment toe aan het aangepaste CSS-bestand van je thema. Zorg ervoor dat de CSS ID selector waarde hetzelfde is als de waarde van het "id" attribuut dat je hebt opgegeven in de shortcode. Je kunt de eigenschap "max-width" aanpassen aan de schermgrootte waarop je wilt dat de kalenderweeklijst wordt weergegeven en het kalenderraster wordt verborgen.

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

Dynamische kalender

Voeg het volgende codefragment toe aan uw thema's functies.php bestand om de kalender weer te geven met alleen het product van de huidige gebeurtenis wanneer deze wordt gebruikt op productbeschrijvingen/pagina's.

function dynamic_fooevents_calendar_shortcode() {
	if (is_product()) {
		global $product;
		if ($product) {
			$product_id = $product-&gt;get_id();
			return do_shortcode('[fooevents_calendar post="' . $product_id . '"]');
		}
	}
	return ''; // fallback if not on product page
}

add_shortcode('dynamic_fooevents_calendar', 'dynamic_fooevents_calendar_shortcode');

Nadat je het codefragment hebt toegevoegd, kun je de shortcode als volgt gebruiken:

[dynamic_fooevents_calendar]

De positie van het pictogram Kopieer kopersgegevens wijzigen

Het volgende fragment lijnt de kopieerknop uit aan de rechterkant van het label met de eerste naam:

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

Als u geen labels gebruikt maar plaatsaanduidingen voor invoer, gebruik dan het volgende codefragment:

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

Toon het tabblad "Gebeurtenisdetails" als eerste op de pagina van de gebeurtenis

Voeg het volgende codefragment toe aan uw thema's functies.php bestand.

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

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

}

Verwijs alle knoppen 'Toevoegen aan winkelwagentje' naar productpagina's

Als een product een eenvoudig product is, zal de knop 'Toevoegen aan winkelwagen' standaard automatisch een product toevoegen aan de winkelwagen van de klant. Bij gebruik van de FooEvents Boekingen extensie, kan het nodig zijn dat uw klanten eerst naar de productpagina om de boeking datum en slot te selecteren. Het volgende fragment zorgt ervoor dat wanneer de knop 'Toevoegen aan winkelwagentje' wordt aangeklikt voor eenvoudige producten, de gebruiker wordt doorgestuurd naar de productpagina.

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

GRATIS weergeven als de prijs van de gebeurtenis is ingesteld op nul (0)

Voeg het volgende codefragment toe aan uw thema's functies.php bestand als je evenementen en producten met een prijs van "0" wilt wijzigen in "GRATIS". Je kunt ook het woord "GRATIS" vervangen door een ander woord of een andere zin of het leeg laten als je niets wilt weergeven.

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

De standaard WooCommerce Toevoegen aan winkelwagen knoppen weergegeven op de winkel aanbieding pagina's zal automatisch een product toe te voegen aan de winkelwagen en omleiden naar de winkelwagen pagina. Bij het gebruik van FooEvents Boekingen, kunt u de voorkeur aan de gebruiker kanaal via de productpagina, zodat ze eerst een slot en tijd boeking selectie te maken voordat u verder gaat naar de winkelwagen pagina. Het volgende knipsel vervangt de link Toevoegen aan winkelwagentje door een link naar de productpagina. Dit zorgt ervoor dat de gebruiker de juiste boekingsselectie kan maken op de productpagina voordat hij doorgaat naar de winkelwagen- of afrekenpagina.

/**
* @snippet Change WooCommerce ‘Add to Cart’ button to 'View Product'
* @source https://www.wptechnic.com/?p=4615
* @author Muhammad Tamzid
* @compatible WC 4.3.1
*/
// Change WooCommerce 'Add To Cart' button to 'View Product'
add_filter( 'woocommerce_loop_add_to_cart_link', 'wpt_custom_view_product_button', 10, 2 );
function wpt_custom_view_product_button( $button, $product ) {
	// Ignore for variable products
	if ( $product->is_type( 'variable' ) ) {
		return $button;
	}
	// Button text here
	$button_text = __( 'Book Ticket', 'woocommerce' );
	return '<a class="button wpt-custom-view-product-button" href="/nl/' . $product->get_permalink() . '/">' . $button_text . '</a>';
}

De evenementdatum weergeven voor "Enkele" evenementen in de winkelwagen en op de afrekenpagina

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 .= '<small>' . $value . '</small>';
	}
	return $product_name;
}

Gegevens weergeven die zijn vastgelegd met de plugin WooCommerce Product Add-ons in tickets voor deelnemers

U kunt het volgende codefragment toevoegen aan uw ticket thema code om de selecties van alle deelnemers in de bestelling weer te geven. Houd er rekening mee dat dit codefragment alle gegevens weergeeft die zijn vastgelegd door de WooCommerce Product Add-ons voor die bestelling als geheel, het zal geen selecties toewijzen aan specifieke deelnemers, omdat deze informatie niet wordt opgeslagen op individuele ticketposten. Dit codefragment werkt het beste als het in het header.php-bestand van het ticket-thema wordt geplaatst en als je het zo hebt ingesteld dat de koper alle tickets voor deelnemers krijgt.

$order = wc_get_order( $ticket["WooCommerceEventsOrderID"] );

$report_data = [];

foreach ( $order->get_items() as $item ) {
	// Get all meta data for the item
	$meta_data = $item->get_meta_data();
													
	foreach ( $meta_data as $meta ) {
		// We only want to count meta that comes from Product Add-ons. 
		// Most add-ons don't start with an underscore.
		if ( strpos( $meta->key, '_' ) === 0 ) continue;

		$label = $meta->key;
		$value = $meta->value;
		$qty   = $item->get_quantity();

		// 1. Check if it's a 10-digit numeric timestamp
		if ( is_numeric( $value ) && strlen( $value ) === 10 ) {
			$value = date_i18n( get_option( 'date_format' ), (int) $value );
		} 
		// 2. Otherwise, check if it's a YYYY-MM-DD string
		elseif ( preg_match( '/^\d{4}-\d{2}-\d{2}$/', $value ) && strtotime( $value ) ) {
			$value = date_i18n( get_option( 'date_format' ), strtotime( $value ) );
		}

		// Store in a nested array: [Label][Value] = Total Count
		if ( !isset( $report_data[$label][$value] ) ) {
			$report_data[$label][$value] = 0;
		}
		$report_data[$label][$value] += $qty;
	}
}

if ( ! empty( $report_data ) ) {
	echo '<table align="center" style="width:80%; border-collapse: collapse; margin-top: 20px; font-family: sans-serif;">';
	echo '<thead style="background-color: #f1f1f1;">';
	echo '<tr>';
	echo '<th style="padding: 12px; border: 1px solid #ccc;">Add-on groep</th>';
	echo '<th style="padding: 12px; border: 1px solid #ccc;">Selectie / Waarde</th>';
	echo '<th style="padding: 12px; border: 1px solid #ccc; text-align: center;">Totaal aantal</th>';
	echo '</tr>';
	echo '</thead>';
	echo '<tbody>';

	foreach ( $report_data as $label => $selections ) {
		foreach ( $selections as $value => $count ) {
			echo '<tr>';
			echo '<td style="padding: 10px; border: 1px solid #eee;"><strong>' . esc_html( $label ) . '.'</strong></td>';
			echo '<td style="padding: 10px; border: 1px solid #eee;">' . esc_html( $waarde ) . '</td>';
			echo '<td style="padding: 10px; border: 1px solid #eee; text-align: center;">' . absint( $count ) . '</td>';
			echo '</tr>';
		}
	}

	echo '</tbody></table>';
} else {
	echo '<p>Geen add-on gegevens gevonden voor deze bestellingen.</p>';
}

Producten en variaties (tickets) weergeven in een rasterindeling in tabelvorm

Voeg het volgende codefragment toe aan uw thema's functies.php bestand om producten en variaties in een tabelraster weer te geven op de evenement-/productpagina in plaats van de standaard vervolgkeuzelijst. Elke ticketoptie wordt weergegeven in een nieuwe rij en heeft zijn eigen hoeveelheidkiezer.

Please note: This code snippet might be incompatible with the FooEvents Stoel en FooEvents Boekingenselectors op de productpagina. Het zou moeten werken met zitplaatsen als je de tafelschikking alleen weergeeft op de afrekenpagina. Dit codefragment kan worden gebruikt voor boekbare evenementen.

function woocommerce_variable_add_to_cart() {
	global $product, $post;
	$variations = find_valid_variations();
	// Check if the special "price_grid" meta is set, if it is, load the default template:
	if ( get_post_meta($post-&gt;ID, "price_grid", true) ) {
	// 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" =&gt; $product-&gt;get_available_variations(), "attributes" =&gt; $product-&gt;get_variation_attributes(), "selected_attributes" =&gt; $product-&gt;get_variation_default_attributes()) );
	return;
}
// Cool, lets do our own template!
?&gt;
<table class='variations variations-grid' cellspacing='0'>
<tbody>
<?php
foreach ( $variations as $key => $value ) {
	if ( ! $value['variation_is_visible'] ) {
		continue;
	}
	?>
<tr>
<td>
	<?php
	foreach ( $value['attributes'] as $key => $val ) {
		$val = str_replace( array( '-', '_' ), ' ', $val );
		printf( "<span class='attr attr-%s'>%s</span>", $key, ucwords( $val ) );
	}
	?>
</td>
<td>
	<?php echo $value['price_html']; ?>
</td>
<td>
	<?php if ( $value['is_in_stock'] ) { ?>
<form class='cart' action='/nl//?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() ); ?>">
		<?php woocommerce_quantity_input(); ?>
		<?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 winkelwagen</button>
<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="nl"/></form>
	<?php } else { ?>
<p class='stock out-of-stock'><?php _e( 'This product is currently out of stock and unavailable.', 'woocommerce' ); ?></p>
	<?php } ?>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
}
function find_valid_variations() {
	global $product;
	$variations   = $product->get_available_variations();
	$attributes   = $product->get_attributes();
	$new_variants = array();
	// Loop through all variations
	foreach ( $variations as $variation ) {
		// Peruse the attributes.
		// 1. If both are explicitly set, this is a valid variation
		// 2. If one is not set, that means any, and we must "create" the rest.
		$valid = true; // so far
		foreach ( $attributes as $slug => $args ) {
			if ( array_key_exists( "attribute_$slug", $variation['attributes'] ) && ! empty( $variation['attributes'][ "attribute_$slug" ] ) ) {
			// Exists
			} else {
				// Not exists, create
				$valid = false; // it contains "anys"
				// loop through all options for the "ANY" attribute, and add each
				foreach ( explode( '|', $attributes[ $slug ]['value'] ) as $attribute ) {
					$attribute                                    = trim( $attribute );
					$new_variant                                  = $variation;
					$new_variant['attributes']['attribute_$slug'] = $attribute;
					$new_variants[]                               = $new_variant;
				}
			}
		}
		// This contains ALL set attributes, and is itself a "valid" variation.
		if ( $valid ) {
			$new_variants[] = $variation;
		}
	}
	return $new_variants;
}

?>

 

 

Articles

Hulp nodig?

Kun je het antwoord niet vinden dat je zoekt? Ons team staat klaar om je te helpen, Neem contact op!