GeoDirectory lazy loads listing images: each image loads when it comes into view. The GD > Post Images block does this when its “Load via Ajax” setting is on, which it is in the default archive item template. The check skips hidden images. When listings sit in a tab, accordion or slider that is closed when the page loads, their images wait until the page next scrolls or resizes.
There are two ways to fix it.
Run the image check when a tab opens
GeoDirectory looks for images to load whenever the window receives a lookup event, and it fires that event for its own tabs. For tabs from your theme or page builder, fire the same event when a tab is clicked. Add this with the Code Snippets plugin or your child theme’s functions.php:
add_action( 'wp_footer', 'my_gd_lazy_load_in_tabs', 100 );
function my_gd_lazy_load_in_tabs() {
?>
<script>
jQuery(function($) {
// Change the selector to match the tab buttons on your page.
$(document).on('click', '.et_pb_tabs_controls li, [data-toggle="tab"], [data-bs-toggle="tab"]', function() {
setTimeout(function() {
$(window).trigger('lookup');
}, 150);
});
});
</script>
<?php
}
The selector covers Divi’s Tabs module and standard Bootstrap tabs. For other builders, replace it with the class of the tab buttons on your page.
Turn off lazy loading for those images
Edit the template that prints the images, usually the Archive item page set at GeoDirectory > Settings > General > Pages. Select the GD > Post Images block and untick “Load via Ajax” in its advanced settings. The images then load with the page. That is slower on long lists, but they never wait for a scroll.
Maps have their own lazy load setting at GeoDirectory > Settings > General, under Map Settings. To change the placeholder shown before an image loads, see Change Lazyload Placeholder Image.