File: /mnt/data/dev/dev-dreamstour-wp/wp-content/themes/dreamstour/inc/options-init.php
<?php
/**
* ReduxFramework Sample Config File
* For full documentation, please visit: http://docs.reduxframework.com/
*/
if ( ! class_exists( 'Redux' ) ) {
return;
}
// This is your option name where all the Redux data is stored.
$opt_name = "dreamstour_theme_options";
// This line is only for altering the demo. Can be easily removed.
/*
*
* --> Used within different fields. Simply examples. Search for ACTUAL DECLARATION for field examples
*
*/
$sampleHTML = '';
if ( file_exists( dirname( __FILE__ ) . '/info-html.html' ) ) {
Redux_Functions::initWpFilesystem();
global $wp_filesystem;
$sampleHTML = $wp_filesystem->get_contents( dirname( __FILE__ ) . '/info-html.html' );
}
// Background Patterns Reader
$sample_patterns_path = ReduxFramework::$_dir . '../sample/patterns/';
$sample_patterns_url = ReduxFramework::$_url . '../sample/patterns/';
$sample_patterns = array();
if ( is_dir( $sample_patterns_path ) ) {
if ( $sample_patterns_dir = opendir( $sample_patterns_path ) ) {
$sample_patterns = array();
while ( ( $sample_patterns_file = readdir( $sample_patterns_dir ) ) !== false ) {
if ( stristr( $sample_patterns_file, '.png' ) !== false || stristr( $sample_patterns_file, '.jpg' ) !== false ) {
$name = explode( '.', $sample_patterns_file );
$name = str_replace( '.' . end( $name ), '', $sample_patterns_file );
$sample_patterns[] = array(
'alt' => $name,
'img' => $sample_patterns_url . $sample_patterns_file
);
}
}
}
}
$theme = wp_get_theme();
$args = array(
'opt_name' => $opt_name,
'display_name' => $theme->get( 'Name' ),
'display_version' => $theme->get( 'Version' ),
'menu_type' => 'submenu',
'allow_sub_menu' => true,
'menu_title' => __( 'Theme Options','dreamstour' ),
'page_title' => __( 'Theme Options','dreamstour' ),
'google_api_key' => '',
'google_update_weekly' => false,
'async_typography' => false,
'admin_bar' => true,
'admin_bar_icon' => 'dashicons-portfolio',
'admin_bar_priority' => 50,
'global_variable' => '',
'dev_mode' => false,
'update_notice' => true,
'customizer' => true,
'page_priority' => null,
'page_parent' => 'themes.php',
'page_permissions' => 'manage_options',
'menu_icon' => '',
'last_tab' => '',
'page_icon' => 'icon-themes',
'page_slug' => 'dreamstour',
'save_defaults' => true,
'default_show' => false,
'default_mark' => '',
'show_import_export' => true,
'transient_time' => 60 * MINUTE_IN_SECONDS,
'output' => true,
'output_tag' => true,
'database' => '',
'use_cdn' => true,
'hints' => array(
'icon' => 'el el-question-sign',
'icon_position' => 'right',
'icon_color' => 'lightgray',
'icon_size' => 'normal',
'tip_style' => array(
'color' => 'red',
'shadow' => true,
'rounded' => false,
'style' => '',
),
'tip_position' => array(
'my' => 'top left',
'at' => 'bottom right',
),
'tip_effect' => array(
'show' => array(
'effect' => 'slide',
'duration' => '500',
'event' => 'mouseover',
),
'hide' => array(
'effect' => 'slide',
'duration' => '500',
'event' => 'click mouseleave',
),
),
)
);
$args['share_icons'][] = array(
'url' => 'https://www.youtube.com/',
'title' => 'View videos on YouTube',
'icon' => 'el el-youtube'
);
$args['share_icons'][] = array(
'url' => 'https://www.facebook.com/',
'title' => 'Like us on Facebook',
'icon' => 'el el-facebook'
);
Redux::setArgs( $opt_name, $args );
$tabs = array(
array(
'id' => 'redux-help-tab-1',
'title' => __( 'Theme Information 1','dreamstour'),
'content' => __( '<p>This is the tab content, HTML is allowed.</p>' ,'dreamstour')
),
array(
'id' => 'redux-help-tab-2',
'title' => __( 'Theme Information 2' ,'dreamstour'),
'content' => __( '<p>This is the tab content, HTML is allowed.</p>','dreamstour' )
)
);
Redux::set_help_tab( $opt_name, $tabs );
$content = __( '<p>This is the sidebar content, HTML is allowed.</p>' ,'dreamstour');
Redux::set_help_sidebar( $opt_name, $content );
Redux::setSection( $opt_name, array(
'title' => __( 'Header','dreamstour' ),
'id' => 'header',
'desc' => __( 'All Website Header settings will be changeable from here','dreamstour' ),
'icon' => 'el el-home',
'fields' => array(
array(
'id' => 'frontend_logo',
'type' => 'media',
'url' => true,
'title' => __( 'Logo' ,'dreamstour'),
'compiler' => 'true',
'default' => array( 'url' => trailingslashit(get_template_directory_uri()) . 'assets/images/logo.svg' ),
),
array(
'id' => 'logo_dark',
'type' => 'media',
'url' => true,
'title' => __( 'Logo Dark','dreamstour' ),
'compiler' => 'true',
'default' => array( 'url' => trailingslashit(get_template_directory_uri()) . 'assets/images/logo-dark.svg' ),
),
array(
'id' => 'breadcrumb_image',
'type' => 'media',
'url' => true,
'title' => __( 'Breadcrumb Image','dreamstour' ),
'compiler' => 'true',
'default' => array( 'url' => trailingslashit(get_template_directory_uri()) . 'assets/images/breadcrumb.jpg' ),
),
array(
'id' => 'header_style',
'type' => 'select',
'title' => esc_html__('Header Style', 'dreamstour'),
'options' => array(
'style1' => esc_html__('Style 1', 'dreamstour'),
'style2' => esc_html__('Style 2', 'dreamstour'),
),
'default' => 'default',
),
array(
'id' => 'contact_phone',
'type' => 'text',
'title' => esc_html__('Phone','dreamstour' ),
'default' => '+1 56565 56594',
'required' => array('header_style', '=', array('default', 'style1')),
),
array(
'id' => 'contact_email',
'type' => 'text',
'title' => esc_html__('Email','dreamstour' ),
'default' => '[email protected]',
'required' => array('header_style', '=', array('default', 'style1')),
),
array(
'id' => 'header_add_tours_page',
'type' => 'select',
'title' => __('Select Add Tours Page','dreamstour' ),
'data' => 'pages',
'required' => array('header_style', '=', array('default', 'style1')),
),
array(
'id' => 'header_login_link',
'type' => 'select',
'title' => __('Select Login Page','dreamstour' ),
'data' => 'pages'
),
array(
'id' => 'header_register_link',
'type' => 'select',
'title' => __('Select Register Page','dreamstour' ),
'data' => 'pages'
),
array(
'id' => 'terms_conditions_page',
'type' => 'select',
'title' => __('Select Terms & Conditions Page','dreamstour' ),
'subtitle' => __('This page link will be used in the registration form agreement.','dreamstour'),
'data' => 'pages'
),
array(
'id' => 'header_forget_link',
'type' => 'select',
'title' => __('Select Forget Password Page' ,'dreamstour'),
'data' => 'pages'
),
array(
'id' => 'header_changepass_link',
'type' => 'select',
'title' => __('Select Change Password Page' ,'dreamstour'),
'data' => 'pages'
),
)
) );
Redux::setSection( $opt_name, array(
'title' => __( 'Tour Pages','dreamstour' ),
'id' => 'tour_pages',
'desc' => __( 'Tour related page settings','dreamstour' ),
'icon' => 'el el-list-alt',
'fields' => array(
array(
'id' => 'tour_grid_page',
'type' => 'select',
'title' => __('Tour Grid Page','dreamstour' ),
'subtitle' => __( 'Select the page for tour grid layout' ,'dreamstour'),
'data' => 'pages'
),
array(
'id' => 'tour_list_page',
'type' => 'select',
'title' => __('Tour List Page','dreamstour' ),
'subtitle' => __( 'Select the page for tour list layout' ,'dreamstour'),
'data' => 'pages'
),
array(
'id' => 'author_tours_page',
'type' => 'select',
'title' => __('Author Tours Page','dreamstour' ),
'subtitle' => __( 'Select the page that uses the Author Tours Template','dreamstour'),
'data' => 'pages'
),
array(
'id' => 'dashboard_page',
'type' => 'select',
'title' => __('Main Dashboard Page','dreamstour' ),
'subtitle' => __('This page should contain [dreamstour_dashboard] shortcode','dreamstour'),
'data' => 'pages'
),
)
) );
Redux::setSection( $opt_name, array(
'title' => __( 'Footer' ,'dreamstour'),
'id' => 'footers',
'customizer_width' => '500px',
'icon' => 'el el-edit',
'fields' => array(
array(
'id' => 'footer_style',
'type' => 'select',
'title' => esc_html__('Footer Style', 'dreamstour'),
'options' => array(
'style1' => esc_html__('Style 1', 'dreamstour'),
'style2' => esc_html__('Style 2', 'dreamstour'),
),
'default' => 'style1',
),
array(
'id' => 'footer_image_back',
'type' => 'media',
'url' => true,
'title' => __( 'Footer Background Image','dreamstour' ),
'compiler' => 'true',
'default' => array( 'url' => trailingslashit(get_template_directory_uri()) . 'assets/images/footer.svg' ),
),
array(
'id' => 'footer_main_column_1',
'title' => 'Footer Column 1',
'type' => 'section',
'indent' => true,
),
array(
'id' => 'footer_column1_title',
'type' => 'text',
'title' => esc_html__('Footer Column 1 Title','dreamstour' ),
'default' => 'Pages',
),
array(
'id' => 'footer_column1_menus',
'type' => 'select',
'title' => __('Select Footer Column 1 Menus','dreamstour' ),
'multi' => true,
'sortable' => true,
'data' => 'menus',
'args' => array(
'save_as' => 'id',
),
),
array(
'id' => 'footer_main_column_2',
'title' => 'Footer Column 2',
'type' => 'section',
'indent' => true,
),
array(
'id' => 'footer_column2_title',
'type' => 'text',
'title' => esc_html__('Footer Column 2 Title','dreamstour' ),
'default' => 'Company',
),
array(
'id' => 'footer_column2_menus',
'type' => 'select',
'title' => __('Select Footer Column 2 Menus','dreamstour' ),
'multi' => true,
'sortable' => true,
'data' => 'menus',
'args' => array(
'save_as' => 'id', // ✅ force saving IDs not slugs
),
),
array(
'id' => 'footer_main_column_3',
'title' => 'Footer Column 3',
'type' => 'section',
'indent' => true,
),
array(
'id' => 'footer_column3_title',
'type' => 'text',
'title' => esc_html__('Footer Column 3 Title','dreamstour' ),
'default' => 'Destinations',
),
array(
'id' => 'footer_column3_menus',
'type' => 'select',
'title' => __('Select Footer Column 3 Menus','dreamstour' ),
'multi' => true,
'sortable' => true,
'data' => 'menus',
'args' => array(
'save_as' => 'id', // ✅ force saving IDs not slugs
),
),
array(
'id' => 'footer_main_column_4',
'title' => 'Footer Column 4',
'type' => 'section',
'indent' => true,
),
array(
'id' => 'footer_column4_title',
'type' => 'text',
'title' => esc_html__('Footer Column 4 Title','dreamstour' ),
'default' => 'Support',
),
array(
'id' => 'footer_column4_menus',
'type' => 'select',
'title' => __('Select Footer Column 4 Menus','dreamstour' ),
'multi' => true,
'sortable' => true,
'data' => 'menus',
'args' => array(
'save_as' => 'id', // ✅ force saving IDs not slugs
),
),
array(
'id' => 'footer_main_column_5',
'title' => 'Footer Column 5',
'type' => 'section',
'indent' => true,
),
array(
'id' => 'footer_column5_title',
'type' => 'text',
'title' => esc_html__('Footer Column 5 Title','dreamstour' ),
'default' => 'Services',
),
array(
'id' => 'footer_column5_menus',
'type' => 'select',
'title' => __('Select Footer Column 5 Menus','dreamstour' ),
'multi' => true,
'sortable' => true,
'data' => 'menus',
'args' => array(
'save_as' => 'id', // ✅ force saving IDs not slugs
),
),
array(
'id' => 'footer-con-section-end',
'title' => 'Footer Center',
'type' => 'section',
'indent' => true,
),
array(
'id' => 'footer_logo',
'type' => 'media',
'url' => true,
'title' => __( 'Footer Logo' ,'dreamstour'),
'compiler' => 'true',
'default' => array( 'url' => trailingslashit(get_template_directory_uri()) . 'assets/images/logo.svg' ),
'required' => array('footer_style', '=', 'style1'),
),
// Footer Style 2 specific fields
array(
'id' => 'footer_dark_logo',
'type' => 'media',
'url' => true,
'title' => __( 'Footer Dark Logo' ,'dreamstour'),
'compiler' => 'true',
'default' => array( 'url' => trailingslashit(get_template_directory_uri()) . 'assets/images/logo.svg' ),
'required' => array('footer_style', '=', 'style2'),
),
array(
'id' => 'footer_style2_about_text',
'type' => 'textarea',
'title' => esc_html__('Footer Style 2 About Text','dreamstour'),
'subtitle' => esc_html__('Shown under the footer logo when Footer Style is set to Style 2.','dreamstour'),
'required' => array('footer_style', '=', 'style2'),
'args' => array(
'wpautop' => false,
'media_buttons' => false,
'textarea_rows' => 4,
'teeny' => false,
'quicktags' => false,
),
),
array(
'id' => 'footer_style2_subscribe_title',
'type' => 'text',
'title' => esc_html__('Footer Style 2 Subscribe Title','dreamstour'),
'default' => 'Subscribe to Keep Updated',
'required' => array('footer_style', '=', 'style2'),
),
array(
'id' => 'footer_style2_subscribe_shortcode',
'type' => 'text',
'title' => esc_html__('Footer Style 2 Subscribe Shortcode','dreamstour'),
'subtitle' => esc_html__('Enter a Contact Form 7 shortcode, e.g. [contact-form-7 id="123" title="Footer Subscribe"]','dreamstour'),
'required' => array('footer_style', '=', 'style2'),
),
array(
'id' => 'footer_googleplay',
'type' => 'media',
'url' => true,
'title' => __( 'Footer Google Play' ,'dreamstour'),
'compiler' => 'true',
'default' => array( 'url' => trailingslashit(get_template_directory_uri()) . 'assets/images/googleplay.svg' ),
),
array(
'id' => 'footer_appstore',
'type' => 'media',
'url' => true,
'title' => __( 'Footer App Store' ,'dreamstour'),
'compiler' => 'true',
'default' => array( 'url' => trailingslashit(get_template_directory_uri()) . 'assets/images/appstore.svg' ),
),
array(
'id' => 'footer_customer_support',
'type' => 'text',
'title' => esc_html__('Customer Support' ,'dreamstour'),
'default' => 'Customer Support',
),
array(
'id' => 'footer_customer_support_number',
'type' => 'text',
'title' => esc_html__('Customer Support Number','dreamstour' ),
'default' => '+1 56589 54598',
),
array(
'id' => 'footer_drop_email_label',
'type' => 'text',
'title' => esc_html__('Drop Us an Email' ,'dreamstour'),
'default' => 'Drop Us an Email',
),
array(
'id' => 'footer_drop_email',
'type' => 'text',
'title' => esc_html__('Drop Us an Email','dreamstour' ),
'default' => '[email protected]',
),
array(
'id' => 'footer_bottom',
'title' => 'Footer Bottom',
'type' => 'section',
'indent' => true,
),
array(
'id' => 'footer_copyright_text',
'type' => 'textarea',
'title' => esc_html__('Footer Copyright Text','dreamstour' ),
'default' => '<p class="fs-14">Copyright © 2025. All Rights Reserved, <a href="javascript:void(0);" class="text-primary fw-medium">DreamsTour</a></p>',
'args' => array(
'wpautop' => false,
'media_buttons' => false,
'textarea_rows' => 5,
'teeny' => false,
'quicktags' => false,
)
),
array(
'id' => 'footers_facebook_link',
'type' => 'text',
'title' => esc_html__('Facebook','dreamstour' ),
'default' => '#',
'placeholder' => '#',
),
array(
'id' => 'footers_twitter_link',
'type' => 'text',
'title' => esc_html__('Twitter','dreamstour' ),
'default' => '#',
'placeholder' => '',
),
array(
'id' => 'footers_instagram_link',
'type' => 'text',
'title' => esc_html__('Instagram','dreamstour' ),
'default' => '#',
'placeholder' => '',
),
array(
'id' => 'footers_linkedin_link',
'type' => 'text',
'title' => esc_html__('LinkedIn','dreamstour' ),
'default' => '#',
'placeholder' => '#',
),
array(
'id' => 'footers_pinterest_link',
'type' => 'text',
'title' => esc_html__('pinterest','dreamstour' ),
'default' => '#',
'placeholder' => '',
),
array(
'id' => 'footer-social-section-end',
'type' => 'section',
'indent' => false,
),
array(
'id' => 'payment_cards',
'type' => 'slides',
'title' => __( 'Payment Card Images', 'dreamstour' ),
'subtitle' => __( 'Upload payment card logos with optional links', 'dreamstour' ),
'placeholder' => array(
'description' => __( 'Optional description', 'dreamstour' ),
'url' => __( 'Card Link', 'dreamstour' ),
),
'show' => array(
'title' => true,
'description' => false,
'url' => true,
),
'default' => array(
array(
'title' => 'Visa',
'image' => trailingslashit( get_template_directory_uri() ) . 'assets/images/payment/visa.svg',
'url' => '#',
),
array(
'title' => 'MasterCard',
'image' => trailingslashit( get_template_directory_uri() ) . 'assets/images/payment/mastercard.svg',
'url' => '#',
),
),
),
),
) );
Redux::setSection( $opt_name, array(
'title' => __( 'Map API','dreamstour' ),
'id' => 'map_api',
'desc' => __( 'Google Map API settings','dreamstour' ),
'icon' => 'el el-list-alt',
'fields' => array(
array(
'id' => 'map_api_key',
'type' => 'text',
'title' => __('Add Map API Key','dreamstour' ),
'subtitle' => __( 'Add your Google Map API key here' ,'dreamstour'),
)
)
) );
Redux::setSection( $opt_name, array(
'title' => __( 'Booking','dreamstour' ),
'id' => 'booking_settings',
'desc' => __( 'Booking related settings','dreamstour' ),
'icon' => 'el el-calendar',
'fields' => array(
array(
'id' => 'booking_allow_customer_dates',
'type' => 'switch',
'title' => __( 'Allow customers to select booking dates','dreamstour' ),
'subtitle' => __( 'When enabled, tour start/end dates are optional in Add Tour form and customers select dates while booking.','dreamstour' ),
'default' => false,
),
array(
'id' => 'booking_allow_guest_booking',
'type' => 'switch',
'title' => __( 'Allow guest bookings','dreamstour' ),
'subtitle' => __( 'If enabled, users can start a booking without logging in. Final details are collected at checkout.','dreamstour' ),
'default' => false,
),
),
) );
if ( file_exists( dirname( __FILE__ ) . '/../README.md' ) ) {
$section = array(
'icon' => 'el el-list-alt',
'title' => __( 'Documentation' ,'dreamstour'),
'fields' => array(
array(
'id' => '17',
'type' => 'raw',
'markdown' => true,
'content_path' => dirname( __FILE__ ) . '/../README.md',
),
),
);
Redux::setSection( $opt_name, $section );
}
if ( ! function_exists( 'compiler_action' ) ) {
function compiler_action( $options, $css, $changed_values ) {
echo '<h1>The compiler hook has run!</h1>';
echo "<pre>";
print_r( $changed_values );
echo "</pre>";
}
}
function dreamstour_validate_menus( $field, $value, $existing_value ) {
$valid = array();
foreach ( (array) $value as $menu_id ) {
if ( wp_get_nav_menu_object( $menu_id ) ) {
$valid[] = $menu_id;
}
}
return $valid;
}
if ( ! function_exists( 'redux_validate_callback_function' ) ) {
function redux_validate_callback_function( $field, $value, $existing_value ) {
$error = false;
$warning = false;
//do your validation
if ( $value == 1 ) {
$error = true;
$value = $existing_value;
} elseif ( $value == 2 ) {
$warning = true;
$value = $existing_value;
}
$return['value'] = $value;
if ( $error == true ) {
$field['msg'] = 'your custom error message';
$return['error'] = $field;
}
if ( $warning == true ) {
$field['msg'] = 'your custom warning message';
$return['warning'] = $field;
}
return $return;
}
}
if ( ! function_exists( 'redux_my_custom_field' ) ) {
function redux_my_custom_field( $field, $value ) {
print_r( $field );
echo '<br/>';
print_r( $value );
}
}
if ( ! function_exists( 'dynamic_section' ) ) {
function dynamic_section( $sections ) {
$sections[] = array(
'title' => __( 'Section via hook' ,'dreamstour'),
'desc' => __( '<p class="description">This is a section created by adding a filter to the sections array. Can be used by child themes to add/remove sections from the options.</p>','dreamstour' ),
'icon' => 'el el-paper-clip',
'fields' => array()
);
return $sections;
}
}
if ( ! function_exists( 'change_arguments' ) ) {
function change_arguments( $args ) {
return $args;
}
}
if ( ! function_exists( 'change_defaults' ) ) {
function change_defaults( $defaults ) {
$defaults['str_replace'] = 'Testing filter hook!';
return $defaults;
}
}