Denne shortcode kan bruges til at vise en bestemt besked rundt omkring på siden baseret på en varekategori i kurven, den er god at bruge hvis man har abonnement produkter i kurven og gerne vil give en besked så snart en af dem tilføjes til kurven.
For at ændre hvad der står i shortcoden skal du lige tjekke koden igennem så står det på 3 linje.
For at få koden til at virke til din varekategori skal du ændre de steder der står “online-kursus”, her indsætter du din varekategori som webshoppen skal tjekke op med – brug korttitlen af varekategorien.
add_shortcode( 'subscription_notice', function ( $atts, $content = '' ) {
$default_message = __( '<strong>Onlinekurser:</strong> <br> Du er ved at købe et online kursus, du vil efter betalingen kunne se dit online kursus på din profil.' );
// Stop hurtigt, hvis kurven er tom
if ( ! WC()->cart || ! WC()->cart->get_cart_contents_count() ) {
return '';
}
// Find mindst ét produkt i kategorien "online-kursus"
foreach ( WC()->cart->get_cart() as $item ) {
if ( isset( $item['data'] ) && has_term( 'online-kursus', 'product_cat', $item['data']->get_id() ) ) {
ob_start(); ?>
<div class="subscription-notice"><?php echo $content ?: $default_message; ?></div>
<?php return ob_get_clean();
}
}
return '';
} );
/**
* Læg en skjult markør i mini-carten for hvert online-kursus,
* så vi kan detektere det med jQuery bagefter.
*/
add_filter( 'woocommerce_cart_item_name', function ( $name, $cart_item ) {
if ( has_term( 'online-kursus', 'product_cat', $cart_item['product_id'] ) ) {
$name .= '<span class="cart-category-online-kursus" style="display:none;">online-kursus</span>';
}
return $name;
}, 10, 2 );
/**
* Frontend-scriptet holder øje med mini-carten
* og skjuler/viser noten på Elementor-widget-niveau.
*/
add_action( 'wp_enqueue_scripts', function () {
wp_enqueue_script( 'wc-cart-fragments' );
wp_add_inline_script(
'wc-cart-fragments',
/** @lang JavaScript */
"
jQuery(document).ready(function ($) {
function checkCartForOnlineCourse() {
return new Promise(function (resolve) {
if (typeof wc_cart_fragments_params === 'undefined') {
resolve(false);
return;
}
const ajaxUrl = wc_cart_fragments_params.wc_ajax_url.replace('%%endpoint%%', 'get_refreshed_fragments');
$.get(ajaxUrl, function (response) {
const fragments = response.fragments || {};
const rawCart = fragments['div.widget_shopping_cart_content'] || '';
const hasCourse = /cart-category-online-kursus/i.test(rawCart);
resolve(hasCourse);
});
});
}
// Initialt check
checkCartForOnlineCourse().then(toggleNotice);
// Når mini-carten genopfriskes
$(document.body).on('wc_fragments_refreshed', function () {
checkCartForOnlineCourse().then(toggleNotice);
});
function toggleNotice(hasCourse) {
const \$widget = $('.subscription-notice').closest('.elementor-widget');
if (hasCourse) {
\$widget.show();
} else {
\$widget.hide();
}
}
});
"
);
} );