WP Travel Engine – Developer Documentation

Table of Contents

Introduction #

WP Travel Engine – Developer documentation is a complete guide for theme and plugin developers willing to develop themes or willing to customize and modify functionalities or templates provided by WP Travel Engine plugin. The developer documentation handbook will be a guideline for developing custom travel themes powered by WP Travel Engine.

Developer Notes #

  • The documentation categorized into mainly two sections based on the type of hooks available for customization in WP Travel Engine, action, and filter hooks. All of the customization and changes are to be accessed using these WordPress hooks. An action hook takes the info it receives, does something with it, and returns nothing. In other words: it acts on something and then exits, returning nothing back to the calling hook and a filter is used to modify something in a specific way so that the modification is then used by code later on. Learn more about actions and filters here.
  • All of the codes and examples in this documentation is intended too either be written inside compatible themes, child themes ( for customizations ), or in custom plugins. No code should be modified or added/edited in the WP Travel Engine core plugin itself as the changes will be lost upon the update of the plugin.
  • Plugin version: please follow along with the documentation only with the latest available version of the WP Travel Engine plugin. Some of the hooks and instructions will work only with the latest versions of WP Travel Engine.

Overriding Template Files #

WP Travel Engine template files contain the markup and template structure for single-trip, archives, and HTML emails of your travel website.

When you open these files, you will notice they all contain hooks that allow you to add/move content without needing to edit template files themselves. This method protects against upgrade issues, as the template files can be left completely untouched.

Template files can be found within the /wp-travel-engine/includes/templates/ directory.

Single Trip Template Files

/wp-travel-engine/includes/templates/single-trip.php
/wp-travel-engine/includes/templates/content-single-trip.php
/wp-travel-engine/includes/templates/single-trip/trip-content-wrapper-start.php
/wp-travel-engine/includes/templates/single-trip/trip-content.php
/wp-travel-engine/includes/templates/single-trip/title.php
/wp-travel-engine/includes/templates/single-trip/gallery.php
/wp-travel-engine/includes/templates/single-trip/tabs-nav.php
/wp-travel-engine/includes/templates/single-trip/tabs-content.php
/wp-travel-engine/includes/templates/single-trip/trip-content-wrapper-end.php
/wp-travel-engine/includes/templates/single-trip/trip-footer.php
/wp-travel-engine/includes/templates/single-trip/trip-sidebar.php

Single Trip Tabs

/wp-travel-engine/includes/templates/single-trip/trip-tabs/overview.php
/wp-travel-engine/includes/templates/single-trip/trip-tabs/itinerary-tab.php
/wp-travel-engine/includes/templates/single-trip/trip-tabs/cost.php
/wp-travel-engine/includes/templates/single-trip/trip-tabs/map.php
/wp-travel-engine/includes/templates/single-trip/trip-tabs/faqs.php


Archive Template Files

/wp-travel-engine/includes/templates/archive-trip.php
/wp-travel-engine/includes/templates/taxonomy-activities.php
/wp-travel-engine/includes/templates/taxonomy-destination.php
/wp-travel-engine/includes/templates/taxonomy-trip_types.php

Archive Template Layouts

/wp-travel-engine/includes/templates/content-grid.php
/wp-travel-engine/includes/templates/content-list.php
/wp-travel-engine/includes/templates/widgets/content-widget-feat-trip.php

Page Templates

/wp-travel-engine/includes/templates/template-activities.php
/wp-travel-engine/includes/templates/template-destination.php
/wp-travel-engine/includes/templates/template-trip_types.php
/wp-travel-engine/includes/templates/template-trip-listing.php

Email Templates

/wp-travel-engine/includes/templates/emails/customer-lost-password.php
/wp-travel-engine/includes/templates/emails/customer-new-account.php
/wp-travel-engine/includes/templates/emails/email-header.php
/wp-travel-engine/includes/templates/emails/email-footer.php

How to Edit Files #

Edit files in an upgrade-safe way using overrides. Copy the template into a directory within your theme named /wp-travel-engine keeping the same file structure but removing the /templates/ subdirectory.

Example: To override the Title on Single Trip, copy: wp-content/plugins/wp-travel-engine/includes/templates/single-trip/title.php to wp-content/themes/yourtheme/wp-travel-engine/single-trip/title.php

The copied file will now override the WP Travel Engine default template file.

Warning: Do not edit these files within the core plugin itself as they are overwritten during the upgrade process and any customizations will be lost.

Action Hooks #

All of the action hooks available in the WP Travel Engine are listed below with hook name, location, and example usage.

Trip single hooks #

wte_before_single_trip #

Fires before the single trip page content blocks are rendered.

Location: includes/templates/content-single-trip.php

do_action( 'wte_before_single_trip' );

wte_after_single_trip #

Fires after the single trip page content blocks are rendered.

Location: includes/templates/content-single-trip.php

do_action( 'wte_after_single_trip' );

wp_travel_engine_before_trip_content #

Fires before the single trip page content blocks are rendered (wrapper).

Location: includes/templates/content-single-trip.php

     /**
       * wp_travel_engine_before_trip_content hook.
       *
       * @hooked trip_content_wrapper_start - 5 (outputs opening divs for the trip content)
       */ 
      do_action( 'wp_travel_engine_before_trip_content' );

wp_travel_engine_after_trip_content #

Fires after the single trip page content blocks are rendered (wrapper).

Location: includes/templates/content-single-trip.php

     /**
       * wp_travel_engine_after_trip_content hook.
       *
       * @hooked trip_content_wrapper_end - 5 (outputs closing divs for the trip content)
       */ 
      do_action( 'wp_travel_engine_after_trip_content' );

wp_travel_engine_before_trip_tabs #

Fires before the tabs on trip single page.

Location: includes/templates/single-trip/tabs-nav.php

do_action('wp_travel_engine_before_trip_tabs');

wp_travel_engine_after_trip_tabs #

Fires after the tabs on trip single page.

Location: includes/templates/single-trip/tabs-nav.php

do_action('wp_travel_engine_after_trip_tabs');

Dynamic Hooks

wte_single_before_trip_tab_{$field} #

Dynamic hook that fires before the trip tab content. $field variable to be replaced by the tab key.

/**
* @hook - wte_single_before_trip_tab_{field_name}
* Dynamic hooks before Tab wrapper - for themes to hook content into.
*/
do_action( "wte_single_before_trip_tab_{$field}" );

wte_single_after_trip_tab_{$field} #

Dynamic hook that fires after the trip tab content. $field variable to be replaced by the tab key.

/**
* @hook - wte_single_after_trip_tab_{field_name}
* Dynamic hooks after Tab wrapper - for themes to hook content into.
*/
do_action( "wte_single_after_trip_tab_{$field}" );

wp_travel_engine_before_secondary #

Fires before the secondary widget area div in the trip single page.

Location: public/class-wp-travel-engine-template-hooks.php

do_action('wp_travel_engine_before_secondary');

wp_travel_engine_before_trip_price #

Fires before the pricing section and calendar for dates selection on the trip single page.

Location: public/class-wp-travel-engine-template-hooks.php

do_action('wp_travel_engine_before_trip_price');

wp_travel_engine_after_trip_price #

Fires after the pricing section and calendar for dates selection on the trip single page.

Location: public/class-wp-travel-engine-template-hooks.php

do_action('wp_travel_engine_after_trip_price');

wp_travel_engine_before_trip_facts #

Fires before the “trips info” section in the sidebar on the trip single page.

Location: public/class-wp-travel-engine-template-hooks.php

do_action('wp_travel_engine_before_trip_facts');

wp_travel_engine_after_trip_facts #

Fires after the “trips info” section in the sidebar on the trip single page.

Location: public/class-wp-travel-engine-template-hooks.php

do_action('wp_travel_engine_after_trip_facts');

wp_travel_engine_before_related_posts #

Hook to add section/block before the related trips section on the trip single page.

Location: public/class-wp-travel-engine-template-hooks.php

do_action('wp_travel_engine_before_related_posts');

wp_travel_engine_after_related_posts #

Hook to add section/block after the related trips section on the trip single page.

Location: public/class-wp-travel-engine-template-hooks.php

do_action('wp_travel_engine_after_related_posts');

wpte_after_travellers_input #

Fires after the traveler numbers input field in the booking form on the single trip page.

Location: public/class-wp-travel-engine-template-hooks.php

do_action('wpte_after_travellers_input');

Removing template actions #

Besides all of the available template hooks for a trip single page developers can also unhook any added sections/actions as per their requirements. This can be beneficial in a situation that requires modification of HTML structures and swapping actions priorities to customize the trip single page.

Applies to: class WP_Travel_Engine_Template_Hooks();

Methods: init_hook(); & init_single_trip_hooks();

Example: Removing gallery slider from trip single page.

/**
 * Removing Gallery Slider from Trip Content
 *  
 * @package Wp_Travel_Engine
 */
$single_trip_hooks = WP_Travel_Engine_Template_Hooks::get_instance();
remove_action( 'wte_single_trip_content', array( $single_trip_hooks, 'display_single_trip_gallery' ), 10 );

Checkout page hooks #

wp_travel_engine_before_billing_form #

Fires before the output of billing form in the checkout page.

<?php do_action('wp_travel_engine_before_billing_form'); ?>

wte_booking_before_submit_button #

Fires before the billing form submit button on the checkout page.

<?php do_action('wte_booking_before_submit_button'); ?>

wte_booking_after_submit_button #

Fires after the billing form submit button on the checkout page.

<?php do_action('wte_booking_after_submit_button'); ?>

Mini-cart hooks

wte_bf_after_trip_name

Location: includes/templates/checkout/mini-cart.php

Fires after the trip name in the mini cart of the checkout page.

<?php do_action('wte_bf_after_trip_name'); ?>

Thank You page hooks #

wp_travel_engine_before_traveller_information_save #

Fires before saving the billing details are saved in thank you page.

<?php do_action('wp_travel_engine_before_traveller_information_save'); ?>

wp_travel_engine_after_traveller_information_save #

Fires after saving the billing details are saved in thank you page.

<?php do_action('wp_travel_engine_after_traveller_information_save'); ?>

Trip archive hooks #

wp_travel_engine_trip_archive_outer_wrapper #

Fires on the trip archive page that contains the outer wrapper div of the trip archive.

<?php
/**
* wp_travel_engine_trip_archive_outer_wrapper hook.
*
* @hooked wp_travel_engine_trip_archive_outer_wrapper - 10 (main wrapper)
*/ 
do_action('wp_travel_engine_trip_archive_outer_wrapper');
?>

wp_travel_engine_trip_archive_loop_start #

Action hook that contains the trip archive loop start.

<?php
/**
* wp_travel_engine_trip_archive_loop_start hook.
*
* @hooked wp_travel_engine_trip_archive_loop_start - 10 (loop starts)
*/ 
do_action('wp_travel_engine_trip_archive_loop_start');
?>

wp_travel_engine_trip_archive_loop_end #

Action hook that contains the trip archive loop end.

<?php
/**
* wp_travel_engine_trip_archive_loop_end hook.
*
* @hooked wp_travel_engine_trip_archive_end_start - 10 (loop ends)
*/ 
do_action('wp_travel_engine_trip_archive_loop_end');
?>

Filter Hooks #

Filter hooks are available in the WP Travel Engine that lets you filter the output of certainly function or variable based on the filter hook’s location. The major template filter hooks are listed below under the titles of pages they apply to.

Trip archive page #

wp_travel_engine_archive_header_sorting_options #

Location: includes/class-wp-travel-engine-archive-hooks.php

Filters the archive page search bar sorting options on the trip archive page.

Example

/**

* Remove the Name in Ascending option from sorting options.

*

* @param array $options

* @return array $options

*/

function wpte_dev_doc_filter_archive_sorting_opts( $options) {

    if ( isset($options['name']) ) {

        unset($options['name']);

    }

  return $options;

}

add_filter( 'wp_travel_engine_archive_header_sorting_options', 'wpte_dev_doc_filter_archive_sorting_opts' );

wte_trip_archive_description_page_header #

Location: includes/class-wp-travel-engine-archive-hooks.php

Filters the display of page header in the archive block.

Example

add_filter( 'wte_trip_archive_description_page_header', '__return_false' );

Remove the page header section on the trips archive page.

wp_travel_engine_template_banner_size #

Location: includes/class-wp-travel-engine-archive-hooks.php

Filters the size of the banner in archive pages. Accepts WordPress default image sizes and images registered form add_image_size().

Example:

/**

* Change image size to large

**/

add_filter('wp_travel_engine_template_banner_size', function( $size ){

     return 'large';

});

wte_trip_archive_description_below_title #

Location: includes/class-wp-travel-engine-archive-hooks.php

Controls the display of archive description in the taxonomy archive pages, Defaults to true.

Example

add_filter( 'wte_trip_archive_description_below_title', '__return_false' );

Trip single page #

wp_travel_engine_trip_prev_price #

Filters the trip main price of the trips. Accepts price and trip id is arguments.

Location: includes/wp-travel-engine-helpers.php

wp_travel_engine_enquiry_fields_display #

Filters the fields of the Enquiry form on Trip single page. When adding a new field with this hook, proper array structure should be maintained for the supported field type.

Example

/**
* Remove enquiry form field
*/
add_filter( 'wp_travel_engine_enquiry_fields_display', function( $enquiry_fields ) {
  unset( $enquiry_fields['some_key'] );
  return $enquiry_fields;
} );

wpte_show_tab_titles_inside_tabs #

Controls the display of the tab titles inside the Trip single page tabs.

Example

add_filter( 'wpte_show_tab_titles_inside_tabs', '__return_false' );

Checkout page #

wp_travel_engine_show_checkout_header_steps #

Filters the display of the header steps in the checkout page. Returns a boolean value.

Example

/**

* Removes the Progress Checkout Workflow from the content

*/

add_filter( 'wp_travel_engine_show_checkout_header_steps', '__return_false' );

wp_travel_engine_booking_fields_display #

Filters the array of checkout booking form fields. Takes array of structured values of supported field types.

Location: includes/backend/booking/booking-parts/customer-details.php

Example

/**
* Remove Checkout form field
*/
add_filter( 'wp_travel_engine_booking_fields_display', function( $booking_fields ) {
  unset( $booking_fields['some_key'] );
  return $booking_fields;
} );

Constants #

WP_TRAVEL_ENGINE_FILE_PATH #

Gives the __FILE__ path of the main plugin file.

define( 'WP_TRAVEL_ENGINE_FILE_PATH', __FILE__ );

WP_TRAVEL_ENGINE_BASE_PATH #

Gives the base path of the WP Travel Engine plugin file.
define( 'WP_TRAVEL_ENGINE_BASE_PATH', dirname( __FILE__ ) );

WP_TRAVEL_ENGINE_TEMPLATE_PATH #

Gives the path of the templates directory of all of the templates used by the WP Travel Engine. The path is /templates in the plugin directory.

define( 'WP_TRAVEL_ENGINE_TEMPLATE_PATH', WP_TRAVEL_ENGINE_BASE_PATH.'/includes/templates' );

WP_TRAVEL_ENGINE_FILE_URL #

Gives the file URL of the plugin directory.

define( 'WP_TRAVEL_ENGINE_FILE_URL', plugins_url( '', __FILE__ ) );

WP_TRAVEL_ENGINE_VERSION #

The main version constant of the WP Travel Engine. Returns the current version number of WP Travel Engine plugin.

define( 'WP_TRAVEL_ENGINE_VERSION', 'version_number' );