Das sieht gut aus! Hier hast du einen Überblick zu deiner Box/Boxen
(function(){
// Selector für die Card-Container - anpassen falls nötig
const cardSelector = '.filter-div .card'; // oder '.giftbox-item' usw.
// Selector innerhalb der Card für die Überschrift, die ersetzt werden soll
const titleSelector = '.card-title'; // ersetze durch tatsächliche Klasse deines Titels
// Hilfsfunktion: Anfrage an WP-AJAX
function fetchGiftboxMap(){
return fetch('/wp-admin/admin-ajax.php?action=get_giftbox_notes', {
credentials: 'same-origin',
method: 'GET',
headers: {
'Accept': 'application/json'
}
}).then(r => r.json()).then(json => {
if(json && json.success && json.data) return json.data;
return {};
}).catch(err => {
console.error('Fehler beim Laden der Geschenkset-Mapping:', err);
return {};
});
}
// Ersetzt Titel in allen Cards basierend auf data-product-id
function applyGiftboxNames(mapping){
if(!mapping) mapping = {};
const cards = document.querySelectorAll(cardSelector);
cards.forEach(card => {
// Produkt-ID aus data-attribute holen
const pid = card.dataset.productId || card.getAttribute('data-product-id') || null;
if(!pid) return;
const note = mapping[pid];
if(note){
// Finde Titel-Element und ersetze Text; fallback: prepend Label
const titleEl = card.querySelector(titleSelector);
if(titleEl){
titleEl.textContent = note;
} else {
// falls kein titleSelector existiert: prepend eine sichtbare Kopfzeile
if(!card.querySelector('.giftbox-label-generated')){
const label = document.createElement('div');
label.className = 'giftbox-label-generated';
label.textContent = note;
label.style.fontWeight = '700';
label.style.marginBottom = '6px';
card.prepend(label);
}
}
}
});
}
// Lädt Mapping und wendet es an; wiederholt bei Bricks-AJAX-Ereignissen
function init() {
fetchGiftboxMap().then(mapping => {
applyGiftboxNames(mapping);
});
}
document.addEventListener('DOMContentLoaded', init);
document.addEventListener('bricks/ajax/load', init);
document.addEventListener('bricks/frontend/reloaded', init);
// Fallback: falls Bricks-Events anders heißen, wiederhole nach kurzer Zeit
setTimeout(init, 1200);
})();
Du hast aktuell keine Geschenkbox.
