Problem

želim sakriti ovaj blok

<div class="element-block events-listing">
   <div class="events-listing-header">
      <h3 class="element-title">Predstojeći događaji</h3>
      <hr class="sm">
   </div>
   <div class="events-listing-content"></div>
</div> 

ako je

<div class="events-listing-content"></div>

prazan.

Kako to najlakše napraviti

1. u custom.js dodati kod

javascript (u folderu child teme napraviti js/custom.js)

document.addEventListener('DOMContentLoaded', function() {
    // Sakrij prazan events listing blok
    document.querySelectorAll('.events-listing').forEach(block => {
        const content = block.querySelector('.events-listing-content');
        if (content && content.innerHTML.trim().length === 0) {
            block.style.display = 'none';
        }
    });
});

2. u functions.php child teme dodati

php

function moja_child_tema_scripts() {
    wp_enqueue_script(
        'custom-js',
        get_stylesheet_directory_uri() . '/js/custom.js',
        array(),
        '1.0',
        true  // učitaj u footer-u
    );
}
add_action('wp_enqueue_scripts', 'moja_child_tema_scripts');

prije odadavanje koda u custom.js probati kopirati js u console da se uvjerimo da radi.

Još lakše (ali samo ako je div stvarno prazan)

.events-listing:has(.events-listing-content:empty) {
    display: none;
}

Za starije browsere gdje :has() nije podržan

.events-listing-content:empty {
    display: none;
}

.events-listing-content:empty ~ .events-listing-header,
.events-listing:has(.events-listing-content:empty) {
    display: none;
}

Ako CSS ne radi, vjerojatno je problem što events-listing-content div nije tehnički “prazan” – može sadržavati razmake, nove redove ili komentare.

Ako :empty ne radi zbog whitespace-a, može se probati ovaj CSS hack:

css.events-listing-content:not(:has(*)) {
    display: none;
}

.events-listing:has(.events-listing-content:not(:has(*))) {
    display: none;
}