GetYourGuide Listeo Integration: Developer Guide
Technical guide for developers who need safe template, hook, styling, or integration overrides without touching licensing code.
License activation, validation, update authorization, package downloads, entitlement checks, and purchase verification are not customization surfaces. Do not override license AJAX actions, license classes, updater callbacks, stored license status, or remote validation results.
Scope
This guide is for developers extending GetYourGuide Integration for Listeo in a child theme, site plugin, or mu-plugin. Keep customizations inside supported presentation, hook, styling, and compatibility layers.
Runtime requirements
- WordPress 5.8 or newer.
- PHP 7.4 or newer.
- Listeo theme or compatible child theme active.
- Listings stored as the
listingpost type. - GetYourGuide URLs stored on listings, normally in the Listeo
_websitemeta field.
Important files
| File | Responsibility |
|---|---|
getyourguide-listeo-integration.php | Bootstrap, constants, settings, admin pages, cron, Elementor registration, price history helpers. |
includes/shortcode-tour-widget.php | [gyg_tour] shortcode, listing/tour resolution, booking card rendering, shortcode assets. |
includes/inject-related-tours-grid.php | Related tours grid, taxonomy matching, term opt-in UI, Listeo placement hooks. |
includes/widget.php | Elementor widget class Elementor_GetYourGuide_Widget. |
includes/class-gygil-license.php | Licensing and updates. Protected infrastructure, not an override target. |
Constants and storage
GYGIL_VERSION,GYGIL_PLUGIN_FILE,GYGIL_PLUGIN_DIR,GYGIL_PLUGIN_URL.GYGIL_PRICE_HISTORY_TABLE: logical table suffixgygil_price_history.GYGIL_PRICE_REFRESH_CRON_HOOK: scheduled price refresh hook.GYGIL_FETCH_PRICE_AJAX_ACTIONandGYGIL_MANUAL_UPDATE_AJAX_ACTION: price lookup/update AJAX actions.gygil_settings: main settings option for locale, currency, widget type, variant, partner ID, auto refresh, and related-grid settings.
Rendering paths
Registered as gyg_availability_widget. Reads the current listing _website URL and renders GetYourGuide widget attributes.
[gyg_tour] renders a booking card and can resolve by tour ID, listing ID, or listing slug.
Renders .gygil-related-tours on selected Listeo single-listing hooks.
Supported filters
| Filter | Use |
|---|---|
gygil_inject_term_taxonomies | Change which taxonomies receive the related-grid term opt-in UI. |
gygil_inject_selectable_taxonomies | Change public listing taxonomies available for grid matching. |
gygil_inject_hook_priority | Change priority when attaching the grid to Listeo hooks. |
gygil_script_debug | Switch widget script debug behavior. |
listingpilot_hub_render_paths | Integrate or relocate the ListingPilot hub render path. |
listingpilot_dashboard_list | Adjust the central ListingPilot dashboard card. |
Safe overrides
Add a custom taxonomy to the term opt-in UI:
add_filter('gygil_inject_term_taxonomies', function (array $taxonomies): array {
$taxonomies[] = 'destination';
return array_values(array_unique($taxonomies));
});
Move the grid later inside the Listeo placement:
add_filter('gygil_inject_hook_priority', function (): int {
return 30;
});
Apply presentation changes with CSS instead of editing plugin output:
.gygil-related-tours {
margin-top: 32px;
}
.gygil-related-tours .gygil-tour-card {
border-radius: 8px;
}
Debugging checklist
- Confirm Listeo is active and the
listingpost type exists. - Confirm the listing has a valid GetYourGuide URL in
_websiteor a valid explicit tour ID. - Check
gygil_settingsfor locale, currency, partner ID, variant, and related-grid settings. - Identify whether output comes from shortcode, Elementor widget, or automatic grid.
- Disable cache/minification temporarily if the external widget script does not initialize.
- Check PHP logs, browser console errors, and the price history table.
Do not customize here
- License activation/deactivation AJAX handlers.
- License state stored in options or remote validation responses.
- Updater/download authorization callbacks.
- Any code that changes whether an unlicensed site receives paid behavior.