Changeset 356260
- Timestamp:
- 10/30/2026 08:44:13 AM (5 hours ago)
- Location:
- st-travel/1.1
- Files:
-
- 7 added
- 3 deleted
- 16 edited
- 1 copied
-
. (copied) (copied from st-travel/1.0 )
-
assets/css/montserrat.css (deleted)
-
assets/fonts (deleted)
-
assets/img (added)
-
assets/img/loader-logo.webp (added)
-
assets/js/custom-admin-script.js (added)
-
assets/js/script.js (modified) (4 diffs)
-
assets/js/search-toggle.js (added)
-
footer.php (modified) (1 diff)
-
functions.php (modified) (7 diffs)
-
header.php (modified) (2 diffs)
-
inc/activation/class-rating-notice.php (added)
-
inc/activation/class-welcome-notice.php (modified) (9 diffs)
-
inc/activation/css/welcome-notice.css (modified) (1 diff)
-
inc/activation/img (added)
-
inc/activation/img/logo-128x128.png (added)
-
inc/customizer.php (modified) (1 diff)
-
index.php (modified) (2 diffs)
-
languages (deleted)
-
page.php (modified) (1 diff)
-
readme.txt (modified) (5 diffs)
-
single.php (modified) (2 diffs)
-
style.css (modified) (15 diffs)
-
template-parts/content/posts-card.php (modified) (1 diff)
-
template-parts/sidebar/categories.php (modified) (2 diffs)
-
template-parts/sidebar/post-list.php (modified) (2 diffs)
-
template-parts/sidebar/tags.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
st-travel/1.1/assets/js/script.js
r353330 r356260 17 17 18 18 menu_toggle.click(function(){ 19 nav_menu.slideToggle(); 20 $(this).toggleClass('active'); 19 var $btn = $(this); 20 var $icon = $btn.find('i'); 21 nav_menu.slideToggle( 280 ); 22 $btn.toggleClass('active'); 23 if ( $btn.hasClass('active') ) { 24 $icon.removeClass('fa-bars').addClass('fa-times'); 25 $btn.attr( 'aria-expanded', 'true' ); 26 $btn.attr( 'aria-label', 'Close menu' ); 27 } else { 28 $icon.removeClass('fa-times').addClass('fa-bars'); 29 $btn.attr( 'aria-expanded', 'false' ); 30 $btn.attr( 'aria-label', 'Open menu' ); 31 } 21 32 }); 22 33 … … 25 36 $('button.dropdown-toggle').click(function() { 26 37 $(this).toggleClass('active'); 27 $(this).parent(). find('.sub-menu').first().slideToggle();38 $(this).parent().children('.sub-menu').slideToggle( 280 ); 28 39 }); 29 40 30 41 31 42 32 if( $(window).width() < 1024 ) {43 if( $(window).width() <= 1024 ) { 33 44 $('#primary-menu').find("li").last().bind( 'keydown', function(e) { 34 45 if( !e.shiftKey && e.which === 9 ) { … … 43 54 44 55 $(window).resize(function() { 45 if( $(window).width() < 1024 ) {56 if( $(window).width() <= 1024 ) { 46 57 $('#primary-menu').find("li").last().bind( 'keydown', function(e) { 47 58 if( !e.shiftKey && e.which === 9 ) { … … 76 87 }); 77 88 89 window.onload = function() { 90 document.getElementById("st-travel-loader-container").style.display = "flex"; 91 }; 78 92 window.addEventListener("load", function() { 79 var loader = document.getElementById("st-travel-loader-container"); 80 if ( ! loader ) { 81 return; 82 } 83 loader.style.display = "none"; 93 setTimeout(function() { 94 document.getElementById("st-travel-loader-container").style.display = "none"; 95 } ); 84 96 }); 85 97 -
st-travel/1.1/footer.php
r353330 r356260 1 <div class="clearfix"></div> 2 <!-- Page Footer --> 3 <footer id="page-footer"> 1 <footer class="footer-side"> 2 <?php if ( get_theme_mod( 'st_travel_show_footer_widget', true ) ) : ?> 3 <div class="footer-widget"> 4 <div class="container st-footer-container"> 5 <?php 6 // Check if any footer sidebar is active 7 $st_travel_any_sidebar_active = false; 8 for ( $st_travel_i = 1; $st_travel_i <= 4; $st_travel_i++ ) { 9 if ( is_active_sidebar( "footer{$st_travel_i}-sidebar" ) ) { 10 $st_travel_any_sidebar_active = true; 11 break; 12 } 13 } 14 // Count active for responsive column classes 15 $st_travel_active_sidebars = 0; 16 if ( $st_travel_any_sidebar_active ) { 17 for ( $st_travel_i = 1; $st_travel_i <= 4; $st_travel_i++ ) { 18 if ( is_active_sidebar( "footer{$st_travel_i}-sidebar" ) ) { 19 $st_travel_active_sidebars++; 20 } 21 } 22 } 23 $st_travel_col_class = $st_travel_active_sidebars > 0 ? 'col-lg-' . (12 / $st_travel_active_sidebars) . ' col-md-6 col-sm-12' : 'col-lg-3 col-md-6 col-sm-12'; 24 ?> 25 <div class="row pt-2 <?php echo esc_attr( get_theme_mod( 'st_travel_enable_footer_animation', true ) ? 'zoomInUp wow' : '' ); ?>"> 26 <?php for ( $st_travel_i = 1; $st_travel_i <= 4; $st_travel_i++ ) : ?> 27 <div class="footer-area <?php echo esc_attr( $st_travel_col_class ); ?>"> 28 <?php if ( $st_travel_any_sidebar_active && is_active_sidebar( "footer{$st_travel_i}-sidebar" ) ) : ?> 29 <?php dynamic_sidebar( "footer{$st_travel_i}-sidebar" ); ?> 30 <?php elseif ( ! $st_travel_any_sidebar_active ) : ?> 31 <?php if ( $st_travel_i === 1 ) : ?> 32 <aside role="complementary" aria-label="<?php echo esc_attr__( 'footer1', 'st-travel' ); ?>" id="Search" class="sidebar-widget"> 33 <h4 class="title"><?php esc_html_e( 'Search', 'st-travel' ); ?></h4> 34 <?php get_search_form(); ?> 35 </aside> 4 36 5 <div class="footer-copyright">6 7 <div class="credit">8 <?php 9 echo wp_kses_post( get_theme_mod( 'st_travel_footer_text', st_travel_footer_text_default() ) ); 10 ?>11 </div>37 <?php elseif ( $st_travel_i === 2 ) : ?> 38 <aside role="complementary" aria-label="<?php echo esc_attr__( 'footer2', 'st-travel' ); ?>" id="archives" class="sidebar-widget"> 39 <h4 class="title"><?php esc_html_e( 'Archives', 'st-travel' ); ?></h4> 40 <ul> 41 <?php wp_get_archives( array( 'type' => 'monthly' ) ); ?> 42 </ul> 43 </aside> 12 44 13 </div> 14 15 </footer><!-- #page-footer --> 45 <?php elseif ( $st_travel_i === 3 ) : ?> 46 <aside role="complementary" aria-label="<?php echo esc_attr__( 'footer3', 'st-travel' ); ?>" id="meta" class="sidebar-widget"> 47 <h4 class="title"><?php esc_html_e( 'Meta', 'st-travel' ); ?></h4> 48 <ul> 49 <?php wp_register(); ?> 50 <li><?php wp_loginout(); ?></li> 51 <?php wp_meta(); ?> 52 </ul> 53 </aside> 16 54 17 </div><!-- #page-wrap --> 55 <?php elseif ( $st_travel_i === 4 ) : ?> 56 <aside role="complementary" aria-label="<?php echo esc_attr__( 'footer4', 'st-travel' ); ?>" id="categories" class="sidebar-widget"> 57 <h4 class="title"><?php esc_html_e( 'Categories', 'st-travel' ); ?></h4> 58 <ul> 59 <?php wp_list_categories( 'title_li=' ); ?> 60 </ul> 61 </aside> 62 <?php endif; ?> 63 <?php endif; ?> 64 </div> 65 <?php endfor; ?> 66 </div> 67 </div> 68 </div> 69 <?php endif; ?> 70 <?php if ( get_theme_mod( 'st_travel_show_footer_copyright', true ) ) : ?> 71 <div class="footer-copyright <?php if ( get_theme_mod( 'st_travel_sticky_copyright_enable', 'off' ) === 'on' ) { ?>sticky-copyright<?php } else { ?>close-sticky<?php } ?>"> 72 <div class="container st-footer-container"> 73 <div class="row pt-2"> 74 <div class="col-lg-6 col-md-6 align-self-center"> 75 <p class="mb-0 py-3 text-start text-md-end"> 76 <?php 77 if ( ! get_theme_mod( 'st_travel_footer_text' ) ) { ?> 78 <a href="<?php echo esc_url( __( 'https://striviothemes.com/product/travel-wordpress-theme/?utm_source=wordpress&utm_medium=theme&utm_campaign=footer_link', 'st-travel' ) ); ?>" target="_blank"> 79 <?php esc_html_e( 'ST Travel WordPress Theme', 'st-travel' ); ?> 80 </a> 81 <?php } else { 82 echo esc_html( get_theme_mod( 'st_travel_footer_text' ) ); 83 } 84 ?> 85 <?php if ( get_theme_mod( 'st_travel_copyright_enable', true ) === true ) : ?> 86 <?php 87 /* translators: %s: KristynaBennett */ 88 printf( esc_html__( ' By %s', 'st-travel' ), 'KristynaBennett' ); ?> 89 <?php endif; ?> 90 </p> 91 </div> 92 <div class="col-lg-6 col-md-6 align-self-center text-right text-md-end"> 93 <?php if ( get_theme_mod( 'st_travel_copyright_enable', true ) === true ) : ?> 94 <a href="<?php echo esc_url( __( 'https://wordpress.org', 'st-travel' ) ); ?>" rel="generator"><?php /* translators: %s: WordPress */ printf( esc_html__( 'Proudly powered by %s', 'st-travel' ), 'WordPress' ); ?></a> 95 <?php endif; ?> 96 </div> 97 <?php if ( get_theme_mod( 'st_travel_footer_social_icon_hide', false ) === true ) { ?> 98 <div class="row"> 99 <div class="col-12 align-self-center py-1"> 100 <div class="footer-links"> 101 <?php $st_travel_settings_footer = get_theme_mod( 'st_travel_social_links_settings_footer' ); ?> 102 <?php if ( is_array( $st_travel_settings_footer ) || is_object( $st_travel_settings_footer ) ) { ?> 103 <?php foreach ( $st_travel_settings_footer as $st_travel_setting_footer ) { ?> 104 <a href="<?php echo esc_url( $st_travel_setting_footer['link_url'] ); ?>" target="_blank"> 105 <i class="<?php echo esc_attr( $st_travel_setting_footer['link_text'] ); ?> me-2"></i> 106 </a> 107 <?php } ?> 108 <?php } ?> 109 </div> 110 </div> 111 </div> 112 <?php } ?> 113 </div> 114 </div> 115 </div> 116 <?php endif; ?> 117 118 </footer> 18 119 19 120 <?php wp_footer(); ?> -
st-travel/1.1/functions.php
r353330 r356260 1 1 <?php 2 2 3 /* 3 /* 4 4 ** Sets up theme defaults and registers support for various WordPress features 5 5 */ 6 6 7 define( 'IS_ST_FREEMIUM', 'st-travel' ); 7 require_once get_template_directory() . '/inc/customizer.php'; 8 9 define('IS_ST_FREEMIUM', 'st-travel'); 8 10 9 11 function st_travel_demo_importer_setup() { 10 11 // Make theme available for translation. Translations live in /languages. 12 load_theme_textdomain( 'st-travel', get_template_directory() . '/languages' ); 13 12 14 13 // Add default posts and comments RSS feed links to head 15 14 add_theme_support( 'automatic-feed-links' ); … … 41 40 42 41 // Add theme support for Custom Background. 43 add_theme_support( 'custom-background', ['default-color' => ' '] );42 add_theme_support( 'custom-background', ['default-color' => 'f5f7fb'] ); 44 43 45 44 // Set the default content width. … … 68 67 add_theme_support( 'align-wide' ); 69 68 69 // WooCommerce in general. 70 add_theme_support( 'woocommerce' ); 71 72 // Zoom. 73 add_theme_support( 'wc-product-gallery-zoom' ); 74 // Lightbox. 75 add_theme_support( 'wc-product-gallery-lightbox' ); 76 // Swipe. 77 add_theme_support( 'wc-product-gallery-slider' ); 78 70 79 add_editor_style( array( '/assets/css/editor-style.css' ) ); 80 81 // Widget support 82 add_theme_support( 'widgets' ); 83 84 // Block-based widget editor (optional: disable to keep classic widgets UI) 85 add_theme_support( 'widgets-block-editor' ); 71 86 } 72 87 … … 78 93 function st_travel_demo_importer_scripts() { 79 94 80 // Self-hosted Montserrat webfont (bundled, SIL OFL 1.1).81 $st_travel_montserrat = get_template_directory() . '/assets/css/montserrat.css';82 wp_enqueue_style(83 'st-travel-montserrat',84 get_template_directory_uri() . '/assets/css/montserrat.css',85 array(),86 file_exists( $st_travel_montserrat ) ? filemtime( $st_travel_montserrat ) : '1.0'87 );88 89 95 // Theme Stylesheet 90 wp_enqueue_style( 'bootstrap-css', get_template_directory_uri() . '/assets/css/bootstrap.css', array(), '4. 0.0' );96 wp_enqueue_style( 'bootstrap-css', get_template_directory_uri() . '/assets/css/bootstrap.css', array(), '4.5.0' ); 91 97 92 98 // Remove prefix from Font Awesome 93 99 wp_enqueue_style( 94 'fontawesome-css', 100 'fontawesome-css', // Corrected handle 95 101 get_template_directory_uri() . '/assets/css/fontawesome-all.css', 96 102 array(), 97 ' 6.5.2'103 '4.5.0' 98 104 ); 99 105 … … 106 112 107 113 wp_enqueue_script('st-travel-custom-script', get_template_directory_uri() . '/assets/js/script.js', array('jquery'), '1.0', true); 108 114 109 115 wp_enqueue_script('st-travel-navigation', get_template_directory_uri() . '/assets/js/navigation.js', false, '1.0', true ); 116 117 wp_enqueue_script( 'st-travel-search-toggle', get_template_directory_uri() . '/assets/js/search-toggle.js', array(), '1.0', true ); 118 wp_localize_script( 'st-travel-search-toggle', 'stSearchToggle', array( 119 'closeLabel' => esc_js( __( 'Close search', 'st-travel' ) ), 120 ) ); 110 121 } 111 122 add_action( 'wp_enqueue_scripts', 'st_travel_demo_importer_scripts' ); 112 123 113 124 /* 125 ** Register widget areas including 4 footer widget columns 126 */ 127 function st_travel_widgets_init() { 128 129 // Main Sidebar 130 register_sidebar( 131 array( 132 'name' => esc_html__( 'Sidebar', 'st-travel' ), 133 'id' => 'sidebar-1', 134 'description' => esc_html__( 'Add widgets here to appear in the main sidebar.', 'st-travel' ), 135 'before_widget' => '<section id="%1$s" class="widget %2$s">', 136 'after_widget' => '</section>', 137 'before_title' => '<h4 class="widget-title title">', 138 'after_title' => '</h4>', 139 ) 140 ); 141 142 // Page Sidebar 143 register_sidebar( 144 array( 145 'name' => esc_html__( 'Page Sidebar', 'st-travel' ), 146 'id' => 'sidebar-2', 147 'description' => esc_html__( 'Add widgets here to appear in the page sidebar.', 'st-travel' ), 148 'before_widget' => '<section id="%1$s" class="widget %2$s">', 149 'after_widget' => '</section>', 150 'before_title' => '<h4 class="widget-title title">', 151 'after_title' => '</h4>', 152 ) 153 ); 154 155 // Sidebar Three 156 register_sidebar( 157 array( 158 'name' => esc_html__( 'Sidebar three', 'st-travel' ), 159 'id' => 'sidebar-3', 160 'description' => esc_html__( 'Add widgets here to appear in the third sidebar area.', 'st-travel' ), 161 'before_widget' => '<section id="%1$s" class="widget %2$s">', 162 'after_widget' => '</section>', 163 'before_title' => '<h4 class="widget-title title">', 164 'after_title' => '</h4>', 165 ) 166 ); 167 168 // Footer Widget Area 1 169 register_sidebar( 170 array( 171 'name' => esc_html__( 'Footer Widget Area 1', 'st-travel' ), 172 'id' => 'footer1-sidebar', 173 'description' => esc_html__( 'Add widgets here to appear in footer column 1.', 'st-travel' ), 174 'before_widget' => '<section id="%1$s" class="widget %2$s">', 175 'after_widget' => '</section>', 176 'before_title' => '<h4 class="widget-title title">', 177 'after_title' => '</h4>', 178 ) 179 ); 180 181 // Footer Widget Area 2 182 register_sidebar( 183 array( 184 'name' => esc_html__( 'Footer Widget Area 2', 'st-travel' ), 185 'id' => 'footer2-sidebar', 186 'description' => esc_html__( 'Add widgets here to appear in footer column 2.', 'st-travel' ), 187 'before_widget' => '<section id="%1$s" class="widget %2$s">', 188 'after_widget' => '</section>', 189 'before_title' => '<h4 class="widget-title title">', 190 'after_title' => '</h4>', 191 ) 192 ); 193 194 // Footer Widget Area 3 195 register_sidebar( 196 array( 197 'name' => esc_html__( 'Footer Widget Area 3', 'st-travel' ), 198 'id' => 'footer3-sidebar', 199 'description' => esc_html__( 'Add widgets here to appear in footer column 3.', 'st-travel' ), 200 'before_widget' => '<section id="%1$s" class="widget %2$s">', 201 'after_widget' => '</section>', 202 'before_title' => '<h4 class="widget-title title">', 203 'after_title' => '</h4>', 204 ) 205 ); 206 207 // Footer Widget Area 4 208 register_sidebar( 209 array( 210 'name' => esc_html__( 'Footer Widget Area 4', 'st-travel' ), 211 'id' => 'footer4-sidebar', 212 'description' => esc_html__( 'Add widgets here to appear in footer column 4.', 'st-travel' ), 213 'before_widget' => '<section id="%1$s" class="widget %2$s">', 214 'after_widget' => '</section>', 215 'before_title' => '<h4 class="widget-title title">', 216 'after_title' => '</h4>', 217 ) 218 ); 219 } 220 add_action( 'widgets_init', 'st_travel_widgets_init' ); 221 222 function st_travel_enqueue_admin_script() { 223 // Enqueue the custom admin script 224 wp_enqueue_script('st-travel-custom-admin-script', get_template_directory_uri() . '/assets/js/custom-admin-script.js', array('jquery'), '1.0', true); 225 } 226 add_action('admin_enqueue_scripts', 'st_travel_enqueue_admin_script'); 227 228 /* 114 229 ** Notices 115 230 */ 116 231 require_once get_parent_theme_file_path( '/inc/activation/class-welcome-notice.php' ); 117 118 /* 119 ** Customizer 120 */ 121 require_once get_parent_theme_file_path( '/inc/customizer.php' ); 232 require_once get_parent_theme_file_path( '/inc/activation/class-rating-notice.php' ); 122 233 123 234 add_action( 'after_switch_theme', 'st_travel_activation_time'); … … 130 241 } 131 242 132 /** 133 * Limit the excerpt length used by the archive post cards. 134 * 135 * @param int $length Default excerpt length. 136 * @return int 137 */ 138 function st_travel_excerpt_length( $length ) { 139 return 20; 140 } 141 add_filter( 'excerpt_length', 'st_travel_excerpt_length' ); 142 143 function st_travel_custom_loader() { 144 ?> 145 <div id="st-travel-loader-container"> 146 <div id="st-travel-custom-loader"></div> 147 </div> 148 <?php 149 } 150 add_action( 'wp_body_open', 'st_travel_custom_loader' ); 243 function st_travel_custom_loader(){ 244 $loader_image = get_theme_mod( 'st_travel_loader_image', get_template_directory_uri() . '/assets/img/loader-logo.webp' ); 245 ?> 246 <div id="st-travel-loader-container"> 247 <?php if ( $loader_image ) : ?> 248 <img src="<?php echo esc_url( $loader_image ); ?>" alt="<?php esc_attr_e( 'Loading', 'st-travel' ); ?>" id="st-travel-loader-img" /> 249 <?php else : ?> 250 <div id="st-travel-custom-loader"></div> 251 <?php endif; ?> 252 </div> 253 <?php 254 } 255 add_action('wp_head', 'st_travel_custom_loader'); 151 256 152 257 /* … … 185 290 <?php 186 291 } 292 293 294 295 296 /* ============================================================================= 297 ST Travel – header Topbar Customizer Options 298 ============================================================================= */ -
st-travel/1.1/header.php
r353330 r356260 21 21 <a class="skip-link screen-reader-text" href="#skip-link-target"><?php esc_html_e( 'Skip to content', 'st-travel' ); ?></a> 22 22 23 <header id="masthead" class="site-header header py-4sticky-header" role="banner">24 <div class="container ">23 <header id="masthead" class="site-header header sticky-header" role="banner"> 24 <div class="container st-header-container"> 25 25 26 26 <!-- Display Custom Header Image --> 27 27 <?php if ( get_header_image() ) : ?> 28 28 <div id="custom-header" class="mb-4"> 29 <img src="<?php echo esc_url( get_header_image() ); ?>" 30 width="<?php echo esc_attr( get_custom_header()->width ); ?>" 31 height="<?php echo esc_attr( get_custom_header()->height ); ?>" 29 <img src="<?php echo esc_url( get_header_image() ); ?>" 30 width="<?php echo esc_attr( get_custom_header()->width ); ?>" 31 height="<?php echo esc_attr( get_custom_header()->height ); ?>" 32 32 alt="<?php esc_attr_e( 'Header Image', 'st-travel' ); ?>" /> 33 33 </div> 34 34 <?php endif; ?> 35 35 36 <div class="row"> 37 <!-- Logo and Site Identity --> 38 <div class="col-lg-3 col-md-3 align-self-center text-center site-logo"> 39 <div class="logo text-center text-md-left mb-3 mb-md-0"> 40 <?php 41 if ( has_custom_logo() ) : 42 the_custom_logo(); 43 else : 44 ?> 45 <h1 class="site-title"> 46 <a href="<?php echo esc_url( home_url( '/' ) ); ?>" 47 title="<?php esc_attr_e( 'Home', 'st-travel' ); ?>" 48 rel="home" style="color: #<?php echo esc_attr( get_header_textcolor() ); ?>;"> 36 <div class="row align-items-center"> 37 38 <!-- Logo / Site Title --> 39 <div class="col-lg-4 col-md-5 col-8 site-logo align-self-center"> 40 <div class="logo"> 41 <?php if ( has_custom_logo() ) : ?> 42 <?php the_custom_logo(); ?> 43 <?php else : ?> 44 <h1 class="site-title mb-0"> 45 <a href="<?php echo esc_url( home_url( '/' ) ); ?>" 46 title="<?php esc_attr_e( 'Home', 'st-travel' ); ?>" 47 rel="home"> 49 48 <?php echo esc_html( get_bloginfo( 'name' ) ); ?> 50 49 </a> 51 50 </h1> 52 <?php if ( get_bloginfo( 'description', 'display' ) ) : ?>53 <p class="site-description" style="color: #<?php echo esc_attr( get_header_textcolor() ); ?>;">54 <?php echo esc_html( get_bloginfo( 'description', 'display' ) ); ?>55 </p>56 <?php endif; ?>57 51 <?php endif; ?> 58 52 </div> 59 53 </div> 60 54 61 <!-- Navigation Menu --> 55 <!-- Navigation + Search --> 56 <div class="col-lg-8 col-md-7 col-4 d-flex align-items-center justify-content-end st-nav-col"> 57 62 58 <nav id="site-navigation" class="main-navigation"> 63 <button type="button" class="menu-toggle" >64 <i class="fa fa- list-ul fa-2x"></i>59 <button type="button" class="menu-toggle" aria-label="<?php esc_attr_e( 'Toggle menu', 'st-travel' ); ?>"> 60 <i class="fa fa-bars fa-lg"></i> 65 61 </button> 66 62 <?php … … 73 69 ?> 74 70 </nav><!-- #site-navigation --> 75 </div> 76 </div> 71 72 <!-- Search Toggle --> 73 <div class="st-header-search-wrap"> 74 <button class="st-header-search-toggle" 75 aria-label="<?php esc_attr_e( 'Open search', 'st-travel' ); ?>" 76 aria-expanded="false" 77 aria-controls="st-header-search-box" 78 aria-haspopup="true"> 79 <i class="fas fa-search" aria-hidden="true"></i> 80 <span class="st-search-label"><?php esc_html_e( 'Search', 'st-travel' ); ?></span> 81 </button> 82 <div class="st-header-search-box" 83 id="st-header-search-box" 84 aria-label="<?php esc_attr_e( 'Site search', 'st-travel' ); ?>" 85 hidden> 86 <?php get_search_form(); ?> 87 </div> 88 </div><!-- .st-header-search-wrap --> 89 90 </div><!-- .st-nav-col --> 91 </div><!-- .row --> 92 </div><!-- .container --> 77 93 </header><!-- #masthead --> 78 94 95 </div><!-- #page-wrap --> 96 -
st-travel/1.1/inc/activation/class-welcome-notice.php
r353330 r356260 29 29 // Install Plugins 30 30 add_action( 'wp_ajax_sttravel_install_activate_st_demo_importer', [$this, 'st_travel_install_activate_st_demo_importer'] ); 31 add_action( 'wp_ajax_nopriv_sttravel_install_activate_st_demo_importer', [$this, 'st_travel_install_activate_st_demo_importer'] ); 32 33 add_action( 'wp_ajax_st_travel_cancel_elementor_redirect', [$this, 'st_travel_cancel_elementor_redirect'] ); 34 } 35 36 public function st_travel_cancel_elementor_redirect() { 37 exit; 31 38 } 32 39 … … 140 147 141 148 /** 149 ** Update all plugins. 150 */ 151 public function st_travel_update_all_plugins() { 152 if ( ! current_user_can( 'install_plugins' ) ) { 153 return; 154 } 155 156 if ( ! function_exists( 'plugins_api' ) ) { 157 require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; 158 } 159 if ( ! class_exists( 'WP_Upgrader' ) ) { 160 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; 161 } 162 163 // Use AJAX upgrader skin instead of plugin installer skin. 164 // ref: function wp_ajax_install_plugin(). 165 $upgrader = new Plugin_Upgrader( new WP_Ajax_Upgrader_Skin() ); 166 167 $upgrade = $upgrader->bulk_upgrade([ 168 'elementor/elementor.php', 169 'st-demo-importer/st-demo-importer.php' 170 ]); 171 172 if ( false === $upgrade ) { 173 return false; 174 } else { 175 return true; 176 } 177 } 178 179 /** 142 180 ** Activate a plugin. 143 181 */ … … 162 200 */ 163 201 public function st_travel_install_activate_st_demo_importer() { 164 check_ajax_referer( ' st_travel_install_importer', 'nonce' );202 check_ajax_referer( 'nonce', 'nonce' ); 165 203 166 204 if ( ! current_user_can( 'install_plugins' ) ) { … … 197 235 */ 198 236 public function st_travel_render_notice() { 199 global $pagenow;200 201 // Allow only main Themes & Plugins pages (no subpages)202 if (203 ( 'themes.php' === $pagenow && isset($_GET['page']) ) ||204 ( 'plugins.php' === $pagenow && isset($_GET['page']) )205 ) {206 return;207 }208 209 if ( ! in_array( $pagenow, array( 'themes.php', 'plugins.php' ), true ) ) {210 return;211 }212 237 213 238 $screen = get_current_screen(); … … 255 280 </h1> 256 281 <p> 257 <?php esc_html_e('STTravel is a modern, responsive WordPress theme designed for travel agencies, tour operators, travel bloggers, and tourism websites. Showcase destinations, tour packages, travel experiences, and services with a clean, engaging, and professional layout. Easy to customize and mobile-friendly, STTravel helps you build a stunning travel website without advanced technical knowledge. .', 'st-travel'); ?>282 <?php esc_html_e('STTravel is a modern, responsive WordPress theme designed for travel agencies, tour operators, travel bloggers, and tourism websites. Showcase destinations, tour packages, travel experiences, and services with a clean, engaging, and professional layout. Easy to customize and mobile-friendly, STTravel helps you build a stunning travel website without advanced technical knowledge.', 'st-travel'); ?> 258 283 </p> 259 284 <div class="st-travel-action-buttons"> 260 285 <a href="<?php echo esc_url(admin_url($redirect_url)); ?>" class="button button-primary" data-action="<?php echo esc_attr($action); ?>" data-freemius="<?php echo esc_attr($freemius_passed); ?>"> 261 286 <?php esc_html_e('Get Started with St Demo Importer', 'st-travel'); ?> 287 <span class="dashicons dashicons-arrow-right-alt"></span> 288 </a> 289 <a href="<?php echo esc_url('https://striviothemes.com/product/travel-wordpress-theme/?utm_source=wordpress&utm_medium=theme&utm_campaign=free_theme_admin_banner'); ?>" class="button button-primary st-travel-buy-now" target="_blank"> 290 <?php esc_html_e('Buy Now', 'st-travel'); ?> 291 </a> 292 <a href="<?php echo esc_url('https://striviothemes.com/preview/st-travel-pro/?utm_source=wordpress&utm_medium=theme&utm_campaign=free_theme_admin_banner'); ?>" class="button button-primary st-travel-view-demo" target="_blank"> 293 <?php esc_html_e('Demo', 'st-travel'); ?> 262 294 </a> 263 295 </div> … … 280 312 check_ajax_referer('sb_dismiss_notice_nonce', 'nonce'); 281 313 282 if ( ! current_user_can( 'manage_options') ) {283 wp_send_json_error( esc_html__( 'Insufficient permissions.', 'st-travel' ) );314 if ( ! current_user_can('administrator') ) { 315 return; 284 316 } 285 317 … … 293 325 */ 294 326 public function st_travel_notice_enqueue_scripts( $page ) { 295 if ( ! in_array( $page, array( 'themes.php', 'plugins.php' ), true ) ) {296 return;297 }298 299 327 wp_enqueue_script( 'jquery' ); 300 328 … … 310 338 action: 'sb_st_travel_dismissed_handler', 311 339 notice: $( this ).closest( '.st-travel-notice' ).data( 'notice' ), 312 nonce: '<?php echo esc_attr( $nonce ); ?>', // Pass the nonce here340 nonce: '<?php echo $nonce; ?>', // Pass the nonce here 313 341 }); 314 342 $( '.st-travel-notice' ).hide(); … … 332 360 $screen_base = ( $screen && isset( $screen->base ) ) ? $screen->base : ''; 333 361 334 $is_theme_or_plugin_page = in_array( $page, array( 'themes.php', 'plugins.php' ), true ) 335 || in_array( $screen_id, array( 'themes', 'plugins', 'plugins-network' ), true ) 336 || in_array( $screen_base, array( 'themes', 'plugins' ), true ); 337 338 $is_wizard_page = ( 'toplevel_page_stdemoimporter-wizard' === $page ) 339 || ( 'toplevel_page_stdemoimporter-wizard' === $screen_id ) 340 || ( 'admin.php' === $pagenow && isset( $_GET['page'] ) && 'stdemoimporter-wizard' === sanitize_key( wp_unslash( $_GET['page'] ) ) ); 341 342 if ( $is_theme_or_plugin_page ) { 343 // Enqueue Scripts 344 wp_enqueue_script( 'st-travel-welcome-notic-js', get_template_directory_uri() . '/inc/activation/js/welcome-notice.js', ['jquery'], false, true ); 345 346 wp_localize_script( 'st-travel-welcome-notic-js', 'st_travel_localize', [ 347 'ajax_url' => admin_url( 'admin-ajax.php' ), 348 'st_demo_importer_nonce' => wp_create_nonce( 'st_travel_install_importer' ), 349 'failed_message' => esc_html__( 'Something went wrong, contact support.', 'st-travel' ), 350 ] ); 351 } 352 353 if ( $is_theme_or_plugin_page || $is_wizard_page ) { 354 // Enqueue Styles. 355 $style_file = get_template_directory() . '/inc/activation/css/welcome-notice.css'; 356 $style_ver = file_exists( $style_file ) ? filemtime( $style_file ) : false; 357 wp_enqueue_style( 'st-travel-welcome-notic-css', get_template_directory_uri() . '/inc/activation/css/welcome-notice.css', array(), $style_ver ); 358 } 362 // Enqueue Scripts on all admin pages 363 wp_enqueue_script( 'st-travel-welcome-notic-js', get_template_directory_uri() . '/inc/activation/js/welcome-notice.js', ['jquery'], false, true ); 364 365 wp_localize_script( 'st-travel-welcome-notic-js', 'st_travel_localize', [ 366 'ajax_url' => admin_url( 'admin-ajax.php' ), 367 'elementor_nonce' => wp_create_nonce( 'nonce' ), 368 'st_demo_importer_nonce' => wp_create_nonce( 'nonce' ), 369 'failed_message' => esc_html__( 'Something went wrong, contact support.', 'st-travel' ), 370 ] ); 371 372 // Enqueue Styles on all admin pages 373 $style_file = get_template_directory() . '/inc/activation/css/welcome-notice.css'; 374 $style_ver = file_exists( $style_file ) ? filemtime( $style_file ) : false; 375 wp_enqueue_style( 'st-travel-welcome-notic-css', get_template_directory_uri() . '/inc/activation/css/welcome-notice.css', array(), $style_ver ); 359 376 } 360 377 -
st-travel/1.1/inc/activation/css/welcome-notice.css
r353330 r356260 1 1 .st-travel-notice { 2 padding: 22px 28px; 3 } 2 display: -webkit-box; 3 display: -ms-flexbox; 4 display: flex; 5 -webkit-box-pack: start; 6 -ms-flex-pack: start; 7 justify-content: flex-start; 8 gap: 16px; 9 border-left: 6px solid #FF8534 !important; 10 background: linear-gradient(120deg, #fffdf3 0%, #ffffff 58%); 11 box-shadow: 0 4px 14px rgb(59 54 100 / 0.10); 12 border-radius: 6px; 13 padding: 22px 28px !important; 14 } 15 16 .st-travel-notice .st-travel-welcome-message { 17 max-width: 980px; 18 width: 100%; 19 } 20 21 .st-travel-notice .st-travel-welcome-message h1 { 22 color: #3B3664; 23 margin: 0 0 8px; 24 font-size: 22px; 25 line-height: 1.3; 26 font-weight: 700; 27 } 28 29 .st-travel-notice .st-travel-welcome-message p { 30 color: #3B3664; 31 opacity: 0.85; 32 max-width: 920px; 33 font-size: 15px; 34 line-height: 1.55; 35 margin: 0; 36 } 37 38 .st-travel-notice .st-travel-welcome-message .st-travel-action-buttons { 39 display: -webkit-box; 40 display: -ms-flexbox; 41 display: flex; 42 -ms-flex-wrap: wrap; 43 flex-wrap: wrap; 44 gap: 10px; 45 margin-top: 16px; 46 } 47 48 .st-travel-notice .st-travel-welcome-message .st-travel-action-buttons a .dashicons { 49 font-size: 12px; 50 line-height: 30px; 51 } 52 53 .st-travel-notice .st-travel-action-buttons .button { 54 border-color: #3B3664 !important; 55 background: #3B3664 !important; 56 color: #ffffff !important; 57 min-height: 36px; 58 padding: 0 14px !important; 59 border-radius: 5px; 60 font-weight: 600; 61 letter-spacing: 0; 62 line-height: 34px; 63 -webkit-transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease; 64 transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease; 65 } 66 67 .st-travel-notice .st-travel-action-buttons .button:hover, 68 .st-travel-notice .st-travel-action-buttons .button:focus { 69 background: #FF8534 !important; 70 border-color: #FF8534 !important; 71 color: #ffffff !important; 72 } 73 74 .st-travel-notice .st-travel-action-buttons .st-travel-buy-now, 75 .st-travel-notice .st-travel-action-buttons .st-travel-view-demo { 76 border-color: #FF8534 !important; 77 color: #3B3664 !important; 78 } 79 80 .st-travel-notice .st-travel-action-buttons .st-travel-view-demo { 81 background: #FFDF73 !important; 82 } 83 84 .st-travel-notice .st-travel-action-buttons .st-travel-buy-now { 85 background: #FF8534 !important; 86 color: #ffffff !important; 87 font-weight: 700; 88 box-shadow: 0 4px 10px rgb(255 133 52 / 0.32); 89 } 90 91 .st-travel-notice .st-travel-action-buttons .st-travel-buy-now:hover, 92 .st-travel-notice .st-travel-action-buttons .st-travel-buy-now:focus, 93 .st-travel-notice .st-travel-action-buttons .st-travel-view-demo:hover, 94 .st-travel-notice .st-travel-action-buttons .st-travel-view-demo:focus { 95 background: #3B3664 !important; 96 border-color: #3B3664 !important; 97 color: #ffffff !important; 98 } 99 100 .st-travel-notice .image-wrap { 101 text-align: right; 102 } 103 104 .st-travel-notice .image-wrap img { 105 display: inline-block; 106 width: 450px; 107 } 108 109 @media screen and (max-width: 1366px) { 110 .st-travel-notice .image-wrap img { 111 max-width: 90%; 112 } 113 114 .st-travel-notice .st-travel-welcome-message p { 115 font-size: 14px; 116 } 117 } 118 119 @media screen and (max-width: 782px) { 120 .st-travel-notice { 121 display: block; 122 padding: 16px !important; 123 } 124 125 .st-travel-notice .st-travel-welcome-message h1 { 126 font-size: 20px; 127 } 128 129 .st-travel-notice .st-travel-welcome-message p { 130 font-size: 14px; 131 } 132 } 133 134 .st-travel-dot-flashing { 135 display: inline-block; 136 margin-left: 10px; 137 margin-bottom: -1px; 138 position: relative; 139 width: 3px; 140 height: 3px; 141 border-radius: 10px; 142 background-color: #3B3664; 143 color: #3B3664; 144 -webkit-animation: dotFlashing 1s infinite linear alternate; 145 animation: dotFlashing 1s infinite linear alternate; 146 -webkit-animation-delay: 0.5s; 147 animation-delay: 0.5s; 148 } 149 150 .st-travel-dot-flashing::before, 151 .st-travel-dot-flashing::after { 152 content: ''; 153 display: inline-block; 154 position: absolute; 155 top: 0; 156 } 157 158 .st-travel-dot-flashing::before { 159 left: -6px; 160 width: 3px; 161 height: 3px; 162 border-radius: 10px; 163 background-color: #3B3664; 164 color: #3B3664; 165 -webkit-animation: dotFlashing 1s infinite alternate; 166 animation: dotFlashing 1s infinite alternate; 167 -webkit-animation-delay: 0s; 168 animation-delay: 0s; 169 } 170 171 .st-travel-dot-flashing::after { 172 left: 6px; 173 width: 3px; 174 height: 3px; 175 border-radius: 10px; 176 background-color: #3B3664; 177 color: #3B3664; 178 -webkit-animation: dotFlashing 1s infinite alternate; 179 animation: dotFlashing 1s infinite alternate; 180 -webkit-animation-delay: 1s; 181 animation-delay: 1s; 182 } 183 184 @-webkit-keyframes dotFlashing { 185 0% { 186 background-color: #3B3664; 187 } 188 189 50%, 190 100% { 191 background-color: #FFDF73; 192 } 193 } 194 195 @keyframes dotFlashing { 196 0% { 197 background-color: #3B3664; 198 } 199 200 50%, 201 100% { 202 background-color: #FFDF73; 203 } 204 } 205 206 @keyframes shimmer { 207 0% { 208 transform: translateX(-100%); 209 } 210 211 100% { 212 transform: translateX(100%); 213 } 214 } 215 216 /* st-travel-compare-feature Css start */ 217 .st-travel-compare-feature { 218 width: 100%; 219 max-width: 640px; 220 margin-top: 20px; 221 margin-left: 0; 222 padding: 25px; 223 } 224 225 .st-travel-compare-table { 226 width: 100%; 227 border-collapse: collapse; 228 margin-top: 0; 229 table-layout: fixed; 230 background: #ffffff; 231 border: 1px solid #e5e5e5; 232 } 233 234 .st-travel-compare-th, 235 .st-compare-td, 236 .st-travel-compare-td-pro, 237 .st-travel-compare-td-free, 238 .st-travel-compare-th-pro { 239 border: 1px solid #000000; 240 text-align: left; 241 padding: 8px; 242 } 243 244 .st-travel-compare-th, 245 .st-travel-compare-th-pro { 246 background-color: #3B3664; 247 text-align: center; 248 color: #ffffff; 249 font-size: 16px; 250 font-weight: 700; 251 } 252 253 .st-travel-compare-td-pro, 254 .st-travel-compare-td-free { 255 text-align: center; 256 width: 90px; 257 vertical-align: middle; 258 } 259 260 .st-travel-compare-table .st-travel-compare-td-pro img, 261 .st-travel-compare-table .st-travel-compare-td-free img { 262 display: inline-block; 263 width: 22px !important; 264 min-width: 22px !important; 265 max-width: 22px !important; 266 height: 22px !important; 267 min-height: 22px !important; 268 max-height: 22px !important; 269 object-fit: contain; 270 vertical-align: middle; 271 } 272 .st-travel-portal-btn { 273 display: flex; 274 gap: 5px; 275 } 276 .st-travel-portal-btn a { 277 margin-bottom: 10px !important; 278 font-weight: 800; 279 text-align: center; 280 width: 49.5%; 281 padding: 5px !important; 282 border-radius: 25px !important; 283 border-color: #FF8534 !important; 284 background-color: #FF8534 !important; 285 color: #ffffff !important; 286 } 287 288 .st-travel-portal-btn a:hover, 289 .st-travel-portal-btn a:focus { 290 border-color: #3B3664 !important; 291 background-color: #3B3664 !important; 292 color: #ffffff !important; 293 } 294 295 .st-travel-feature-comparison { 296 text-align: center; 297 color: #3B3664; 298 margin: 0 0 10px; 299 padding: 0; 300 font-weight: 700; 301 font-size: 36px; 302 font-family: poppins; 303 } 304 305 .st-travel-compare-table .st-compare-td { 306 color: #3B3664; 307 font-size: 15px; 308 font-weight: 600; 309 line-height: 1.4; 310 } 311 312 .st-travel-compare-table tr:nth-child(even) td { 313 background: #fffdf5; 314 } 315 316 @media screen and (max-width: 1024px) { 317 .st-travel-compare-feature { 318 max-width: 100%; 319 } 320 321 .st-travel-feature-comparison { 322 font-size: 30px; 323 } 324 } 325 326 /* Admin Bar Button Icon */ 327 .st-travel-action-buttons .dashicons-arrow-right-alt { 328 vertical-align: unset !important; 329 } -
st-travel/1.1/inc/customizer.php
r353330 r356260 1 1 <?php 2 2 /** 3 * ST Travel Theme Customizer .3 * ST Travel Theme Customizer 4 4 */ 5 5 6 if ( ! function_exists( 'st_travel_footer_text_default' ) ) {7 /**8 * Default footer credit text.9 */10 function st_travel_footer_text_default() {11 return __( 'ST Travel Theme by <a href="https://striviothemes.com/">Strivio Themes</a>.', 'st-travel' );12 }13 }14 15 6 /** 16 * Register Customizer settings and controls.7 * Register customizer settings. 17 8 */ 18 9 function st_travel_customize_register( $wp_customize ) { 19 10 20 // Footer section. 21 $wp_customize->add_section( 'st_travel_footer_section', array( 22 'title' => esc_html__( 'Footer', 'st-travel' ), 23 'priority' => 120, 11 /* ========================================================= 12 Loader Section 13 ========================================================= */ 14 $wp_customize->add_section( 'st_travel_loader_section', array( 15 'title' => esc_html__( 'Loader Settings', 'st-travel' ), 16 'priority' => 30, 24 17 ) ); 25 18 26 // Footer text setting.27 $wp_customize->add_setting( 'st_travel_ footer_text', array(28 'default' => st_travel_footer_text_default(),29 'sanitize_callback' => ' wp_kses_post',19 // Setting: Loader Background Color 20 $wp_customize->add_setting( 'st_travel_loader_bg_color', array( 21 'default' => '#ffffff', 22 'sanitize_callback' => 'sanitize_hex_color', 30 23 'transport' => 'refresh', 31 24 ) ); 32 25 33 $wp_customize->add_control( 'st_travel_footer_text', array( 34 'label' => esc_html__( 'Footer Text', 'st-travel' ), 35 'description' => esc_html__( 'Basic HTML allowed (e.g. links).', 'st-travel' ), 36 'section' => 'st_travel_footer_section', 37 'type' => 'textarea', 26 $wp_customize->add_control( new WP_Customize_Color_Control( 27 $wp_customize, 28 'st_travel_loader_bg_color', 29 array( 30 'label' => esc_html__( 'Loader Background Color', 'st-travel' ), 31 'section' => 'st_travel_loader_section', 32 ) 33 ) ); 34 35 // Setting: Loader Image 36 $wp_customize->add_setting( 'st_travel_loader_image', array( 37 'default' => get_template_directory_uri() . '/assets/img/loader-logo.webp', 38 'sanitize_callback' => 'esc_url_raw', 39 'transport' => 'refresh', 40 ) ); 41 42 $wp_customize->add_control( new WP_Customize_Image_Control( 43 $wp_customize, 44 'st_travel_loader_image', 45 array( 46 'label' => esc_html__( 'Loader Image', 'st-travel' ), 47 'section' => 'st_travel_loader_section', 48 ) 38 49 ) ); 39 50 } 40 51 add_action( 'customize_register', 'st_travel_customize_register' ); 52 53 54 /** 55 * Output dynamic loader CSS based on customizer values. 56 */ 57 function st_travel_loader_customizer_css() { 58 $bg_color = get_theme_mod( 'st_travel_loader_bg_color', '#ffffff' ); 59 $bg_color = sanitize_hex_color( $bg_color ); 60 ?> 61 <style> 62 #st-travel-loader-container { 63 background: <?php echo esc_attr( $bg_color ); ?>; 64 } 65 </style> 66 <?php 67 } 68 add_action( 'wp_head', 'st_travel_loader_customizer_css' ); -
st-travel/1.1/index.php
r353330 r356260 6 6 <div class="row"> 7 7 8 <?php 9 function st_travel_excerpt_length($st_travel_length) { 10 return 20; 11 } 12 add_filter('excerpt_length', 'st_travel_excerpt_length'); 13 ?> 14 8 15 <div class="col-md-8"> 16 <!-- Dynamic section heading --> 17 <?php 18 if ( is_search() ) { 19 $st_section_title = sprintf( 20 /* translators: %s: search query string */ 21 esc_html__( 'Search Results for: %s', 'st-travel' ), 22 '<span class="st-search-query">' . esc_html( get_search_query() ) . '</span>' 23 ); 24 } elseif ( is_archive() ) { 25 $st_section_title = get_the_archive_title(); 26 } elseif ( is_home() && ! is_front_page() && get_option( 'page_for_posts' ) ) { 27 $st_section_title = esc_html( get_the_title( (int) get_option( 'page_for_posts' ) ) ); 28 } else { 29 $st_section_title = esc_html__( 'Latest Posts', 'st-travel' ); 30 } 31 ?> 32 <div class="st-blog-section-header"> 33 <h2><?php echo wp_kses( $st_section_title, array( 'span' => array( 'class' => array() ) ) ); ?></h2> 34 <div class="st-section-divider"></div> 35 </div> 36 9 37 <div class="row"> 10 38 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> … … 26 54 <?php endif; ?> 27 55 28 <!-- Pagination -->29 <?php the_posts_pagination(); ?>30 56 </div> 57 <!-- Pagination --> 58 <?php the_posts_pagination(); ?> 31 59 </div> 32 60 -
st-travel/1.1/page.php
r353330 r356260 20 20 if ( get_the_title() !== '' ) { 21 21 echo '<header class="post-header">'; 22 echo '<h1 class="page-title">'. esc_html( get_the_title()) .'</h1>';22 echo '<h1 class="page-title">'. get_the_title() .'</h1>'; 23 23 echo '</header>'; 24 24 } -
st-travel/1.1/readme.txt
r353330 r356260 2 2 3 3 Author: KristynaBennett 4 Requires at least: 6.0 5 Tested up to: 7.1 6 Requires PHP: 7.4 7 Version: 1.0 4 Requires at least: WordPress 4.7+ 5 Tested up to: WordPress 7.1 6 Version: 1.1 8 7 License: GPLv3 or later 9 8 License URI: http://www.gnu.org/licenses/gpl-3.0.en.html 10 Tags: blog, one-column, two-columns, right-sidebar, custom-background, custom-menu, custom-logo, featured-images, sticky-post, theme-options, threaded-comments, translation-ready9 Tags: blog, one-column, custom-background, custom-colors, full-width-template, custom-menu, custom-logo, featured-images, sticky-post, theme-options, threaded-comments, translation-ready 11 10 12 11 … … 14 13 15 14 STTravel is a modern, responsive, and easy-to-use WordPress theme designed for travel agencies, tour operators, travel bloggers, vacation planners, and tourism websites. It provides a clean and engaging layout to showcase destinations, tour packages, travel experiences, services, and helpful travel content. Built with a focus on simplicity and flexibility, STTravel helps you create a professional travel website without requiring advanced technical knowledge. Its responsive design ensures your website looks great on desktops, tablets, and mobile devices. Whether you are promoting tour packages, showcasing destinations, sharing travel stories, or building a complete travel agency website, STTravel provides a solid and flexible foundation for your next WordPress project. 15 16 16 17 17 == Copyright == … … 37 37 * navigation.js - Licensed under GPLv2 or later ( Applies to navigation.js file in /st-travel/assets/js/ ) 38 38 39 39 40 == Icons == 40 41 … … 45 46 == Fonts == 46 47 47 Montserrat (bundled, self-hosted in /assets/fonts/montserrat/) 48 Copyright 2024 The Montserrat Project Authors (https://github.com/JulietaUla/Montserrat) 49 - License: SIL Open Font License, 1.1, https://opensource.org/licenses/OFL-1.1 50 - License file: /assets/fonts/montserrat/LICENSE.txt 51 - Source: https://fonts.google.com/specimen/Montserrat 48 The ST Travel theme uses the following fonts: 49 50 1. **Roboto** 51 - **License:** SIL Open Font License, 1.1, https://opensource.org/licenses/OFL-1.1 52 - **Source:** https://fonts.google.com/specimen/Roboto 53 54 2. **Poppins** 55 - **License:** SIL Open Font License, 1.1, https://opensource.org/licenses/OFL-1.1 56 - **Source:** https://fonts.google.com/specimen/Poppins 57 58 3. **Montserrat** 59 - **License:** SIL Open Font License, 1.1, https://opensource.org/licenses/OFL-1.1 60 - **Source:** https://fonts.google.com/specimen/Montserrat 61 62 4. **Cormorant Garamond** 63 - **License:** SIL Open Font License, 1.1, https://opensource.org/licenses/OFL-1.1 64 - **Source:** https://fonts.google.com/specimen/Cormorant+Garamond 52 65 53 66 54 67 == Changelog == 55 68 69 Version 1.1 70 - Bug Fixes. 71 56 72 Version 1.0 57 73 - Initial Release. 74 58 75 59 76 ST Travel the following third-party resources: … … 62 79 63 80 License : CC0 1.0 Universal (CC0 1.0) 64 License URI : https:// pxhere.com/en/license65 Source : https:// pxhere.com/en/photo/120007381 License URI : https://stocksnap.io/license 82 Source : https://stocksnap.io/photo/smiling-woman-KS92MVGSXY 66 83 67 84 Created by Strivio themes Team and released under Creative Commons ( CC0 ) License. 68 85 69 https://striviothemes.com/preview/st-travel-pro/wp-content/uploads/sites/25/2026/10/header-logo.png 86 https://striviothemes.com/preview/st-travel-pro/wp-content/uploads/sites/8/2026/03/hero-icon-1.svg 87 https://striviothemes.com/preview/st-travel-pro/wp-content/uploads/sites/8/2026/03/hero-icon-2.svg 88 https://striviothemes.com/preview/st-travel-pro/wp-content/uploads/sites/8/2026/04/header-logo-1.png 89 https://striviothemes.com/demo/st-demo-importer-imgs/available.png 90 https://striviothemes.com/demo/st-demo-importer-imgs/not-available.png 91 /inc/activation/img/logo-128x128.png -
st-travel/1.1/single.php
r353330 r356260 18 18 <h1 class="post-title"><?php the_title(); ?></h1> 19 19 20 <?php echo '<div class="post-categories">' . wp_kses_post( get_the_category_list( ', ' )) . ' </div>'; ?>20 <?php echo '<div class="post-categories">' . get_the_category_list( ', ' ) . ' </div>'; ?> 21 21 22 22 <div class="post-meta"> … … 47 47 $st_travel_tag_list = get_the_tag_list( '<div class="post-tags">','','</div>'); 48 48 if ( $st_travel_tag_list ) { 49 echo wp_kses_post( $st_travel_tag_list );49 echo ''. $st_travel_tag_list; 50 50 } 51 51 ?> -
st-travel/1.1/style.css
r353330 r356260 1 1 /* 2 2 Theme Name: ST Travel 3 Theme URI: https://striviothemes.com/product/ st-travel/3 Theme URI: https://striviothemes.com/product/free-travel-wordpress-theme/ 4 4 Author: KristynaBennett 5 5 Author URI: https://striviothemes.com/ 6 6 Description: STTravel is a modern, responsive, and easy-to-use WordPress theme designed for travel agencies, tour operators, travel bloggers, vacation planners, and tourism websites. It provides a clean and engaging layout to showcase destinations, tour packages, travel experiences, services, and helpful travel content. Built with a focus on simplicity and flexibility, STTravel helps you create a professional travel website without requiring advanced technical knowledge. Its responsive design ensures your website looks great on desktops, tablets, and mobile devices. Whether you are promoting tour packages, showcasing destinations, sharing travel stories, or building a complete travel agency website, STTravel provides a solid and flexible foundation for your next WordPress project. 7 Version: 1. 08 Requires at least: 6.09 Requires PHP: 7.410 Tested up to: 7. 17 Version: 1.1 8 Requires at least: 4.7 9 Requires PHP: 5.2 10 Tested up to: 7.0 11 11 License: GNU General Public License v3 or later. 12 12 License URI: https://www.gnu.org/licenses/gpl-3.0.html 13 13 Text Domain: st-travel 14 Domain Path: /languages 15 Tags: blog, one-column, two-columns, right-sidebar, custom-background, custom-menu, custom-logo, featured-images, sticky-post, theme-options, threaded-comments, translation-ready 14 Tags: blog, one-column, custom-background, custom-colors, full-width-template, custom-menu, custom-logo, featured-images, sticky-post, theme-options, threaded-comments, translation-ready 16 15 */ 17 16 … … 33 32 font-size: 1rem; 34 33 font-weight: 400; 35 line-height: 1. 5;34 line-height: 1.6; 36 35 color: #333333; 37 36 background-color: #fff; … … 104 103 a { 105 104 background-color: transparent; 106 color: # 0A1A2F;105 color: #C8922A; 107 106 text-decoration: none; 108 107 } … … 210 209 .st-travel-single-wrap a,.page-single a,.comment-content a,.woocommerce-product-details__short-description a, #tab-description a,.extra-home-content a { 211 210 text-decoration: underline; 212 color:# 0A1A2F;211 color:#C8922A; 213 212 } 214 213 … … 652 651 653 652 /* Theme Styles Start */ 654 655 653 #page .st-home-page { 656 654 overflow: hidden; … … 753 751 } 754 752 755 .footer-copyright {756 text-align: center;757 padding: 30px 0;758 }759 760 753 .site-logo a, 761 754 .st-travel-post .read-more a, … … 764 757 } 765 758 766 /* 404 Page */ 767 .page-404 { 768 padding: 5em 0px; 769 } 770 .page-404 h2, .page-404 p { 771 text-align: center; 772 } 759 773 760 /* Menu Styles Start */ 774 761 … … 800 787 width: 100%; 801 788 height: 100%; 802 background: #0B1929;; 789 background: #14287B; 790 } 791 792 #st-travel-loader-img { 793 max-width: 180px; 794 max-height: 180px; 795 width: auto; 796 height: auto; 797 object-fit: contain; 798 animation: st-loader-pulse 1.6s ease-in-out infinite; 799 } 800 801 @keyframes st-loader-pulse { 802 0% { transform: scale(1); opacity: 1; } 803 50% { transform: scale(1.15); opacity: 0.6; } 804 100% { transform: scale(1); opacity: 1; } 803 805 } 804 806 … … 857 859 858 860 .st-read-more-btn{ 859 background: #0B1929; ;861 background: #0B1929; 860 862 border: none; 861 -webkit-text-fill-color: #fff fff!important;863 -webkit-text-fill-color: #fff !important; 862 864 -webkit-background-clip: inherit !important; 863 865 } 864 866 865 867 .st-read-more-btn:hover{ 866 background: # FFA663;;868 background: #C8922A; 867 869 transform: scale(1.05); 868 870 } … … 874 876 .st-travel-cat-badge{ 875 877 color: #fff; 876 background: #0B1929; ;878 background: #0B1929; 877 879 } 878 880 /* post card css end */ … … 923 925 border-radius: 4px 0px 0px 0px; 924 926 opacity: 0px; 925 background: #0B1929; ;927 background: #0B1929; 926 928 color: #fff; 927 929 … … 985 987 } 986 988 987 @media screen and (min-width : 768px) and (max-width : 102 3px) {989 @media screen and (min-width : 768px) and (max-width : 1024px) { 988 990 989 991 .hero-form label { … … 1331 1333 padding: 15px; 1332 1334 } 1333 @media screen and (min-width: 102 4px) {1335 @media screen and (min-width: 1025px) { 1334 1336 .main-navigation { 1335 1337 display: block; 1336 1338 position: relative; 1337 1339 float: right; 1338 width: 70%;1340 width: 58%; 1339 1341 } 1340 1342 .main-navigation .menu-item-has-children > a:after { … … 1455 1457 } 1456 1458 1457 @media screen and (max-width: 102 3px) {1459 @media screen and (max-width: 1024px) { 1458 1460 .main-navigation ul.nav-menu { 1459 1461 margin-right: 0; … … 1506 1508 } 1507 1509 } 1510 1511 /* ============================================================================= 1512 ST Travel – Footer Styles 1513 ============================================================================= */ 1514 1515 /* ---- Footer outer wrapper ---- */ 1516 .footer-side { 1517 background-color: #121111; 1518 color: #cccccc; 1519 /* font-size: 0.9rem; */ 1520 line-height: 1.7; 1521 } 1522 1523 /* Bottom spacing on theme templates so footer has gap. 1524 Applied per-template (not on footer itself) so Elementor pages 1525 using full-width layouts don't get extra gap above footer. */ 1526 .main-container.page-single, 1527 .st-travel-single-wrap, 1528 .st-travel-index-wrap, 1529 .page-404 { 1530 margin-bottom: 70px; 1531 } 1532 1533 /* ---- Footer widget section ---- */ 1534 .footer-widget { 1535 padding: 60px 0 40px; 1536 border-bottom: 1px solid rgba( 255, 255, 255, 0.08 ); 1537 } 1538 1539 /* ---- Individual footer column ---- */ 1540 .footer-area { 1541 margin-bottom: 30px; 1542 } 1543 1544 /* ---- Widget title ---- */ 1545 .footer-area .widget-title, 1546 .footer-area .title { 1547 color: #ffffff; 1548 font-weight: 600; 1549 text-transform: uppercase; 1550 margin-bottom: 20px; 1551 padding-bottom: 15px; 1552 position: relative; 1553 } 1554 1555 .footer-area .widget-title::after, 1556 .footer-area .title::after { 1557 content: ''; 1558 display: block; 1559 width: 40px; 1560 height: 2px; 1561 background-color: #0B1929; 1562 position: absolute; 1563 bottom: 0; 1564 left: 0; 1565 } 1566 1567 /* ---- Widget links ---- */ 1568 .footer-area a { 1569 color: #cccccc; 1570 text-decoration: none; 1571 transition: color 0.25s ease; 1572 } 1573 1574 .footer-area a:hover, 1575 .footer-area a:focus { 1576 color: #0B1929; 1577 text-decoration: underline; 1578 } 1579 1580 /* ---- Widget list items ---- */ 1581 .footer-area ul { 1582 list-style: none; 1583 padding: 0; 1584 margin: 0; 1585 } 1586 1587 .footer-area ul li { 1588 padding: 4px 0; 1589 border-bottom: 1px solid rgba( 255, 255, 255, 0.06 ); 1590 } 1591 1592 .footer-area ul li:last-child { 1593 border-bottom: none; 1594 } 1595 1596 .footer-area ul li a::before { 1597 content: '\203A'; 1598 margin-right: 6px; 1599 color: #0B1929; 1600 } 1601 1602 /* ---- Search widget inside footer ---- */ 1603 .footer-side .footer-widget form div { 1604 display: flex; 1605 gap: 6px; 1606 } 1607 1608 .footer-area #searchform input[type="text"] { 1609 flex: 1; 1610 padding: 8px 12px; 1611 border: 1px solid rgba( 255, 255, 255, 0.15 ); 1612 background-color: rgba( 255, 255, 255, 0.07 ); 1613 color: #ffffff; 1614 border-radius: 4px; 1615 font-size: 0.875rem; 1616 } 1617 1618 .footer-area #searchform .search-field::placeholder { 1619 color: #aaaaaa; 1620 } 1621 1622 .footer-area #searchform input[type="submit"] { 1623 padding: 8px 16px; 1624 background-color: #0B1929; 1625 color: #ffffff; 1626 border: none; 1627 border-radius: 4px; 1628 cursor: pointer; 1629 font-size: 0.875rem; 1630 transition: background-color 0.25s ease; 1631 } 1632 1633 .footer-area #searchform input[type="submit"]:hover, 1634 .footer-area #searchform input[type="submit"]:focus { 1635 background-color: #ffffff; 1636 color: #0B1929; 1637 } 1638 1639 /* ---- Text / paragraph widgets ---- */ 1640 .footer-area p { 1641 color: #bbbbbb; 1642 margin-bottom: 12px; 1643 } 1644 1645 /* ---- Footer copyright bar ---- */ 1646 .footer-copyright { 1647 background-color: #0B1929; 1648 padding: 14px 0; 1649 } 1650 1651 .footer-copyright p { 1652 color: #ffffff; 1653 margin: 0; 1654 } 1655 1656 .footer-copyright a { 1657 color: #ffffff; 1658 text-decoration: none; 1659 transition: color 0.25s ease; 1660 } 1661 1662 .footer-copyright a:hover, 1663 .footer-copyright a:focus { 1664 color: #ffffff; 1665 text-decoration: underline; 1666 } 1667 1668 /* ---- Sticky copyright ---- */ 1669 .footer-copyright.sticky-copyright { 1670 position: fixed; 1671 bottom: 0; 1672 left: 0; 1673 right: 0; 1674 z-index: 999; 1675 } 1676 1677 .footer-copyright.close-sticky { 1678 position: relative; 1679 } 1680 1681 /* ---- Footer social icons ---- */ 1682 .footer-links { 1683 display: flex; 1684 flex-wrap: wrap; 1685 gap: 10px; 1686 justify-content: center; 1687 } 1688 1689 .footer-links a { 1690 display: inline-flex; 1691 align-items: center; 1692 justify-content: center; 1693 width: 36px; 1694 height: 36px; 1695 border-radius: 50%; 1696 background-color: rgba( 255, 255, 255, 0.08 ); 1697 color: #cccccc; 1698 font-size: 0.95rem; 1699 text-decoration: none; 1700 transition: background-color 0.25s ease, color 0.25s ease; 1701 } 1702 1703 .footer-links a:hover, 1704 .footer-links a:focus { 1705 background-color: #0B1929; 1706 color: #ffffff; 1707 } 1708 1709 /* ---- Progress bar ---- */ 1710 .theme-progress-bar { 1711 position: fixed; 1712 left: 0; 1713 width: 0%; 1714 height: 3px; 1715 background-color: #0B1929; 1716 z-index: 9999; 1717 transition: width 0.1s linear; 1718 } 1719 1720 .theme-progress-bar.top { 1721 top: 0; 1722 } 1723 1724 .theme-progress-bar.bottom { 1725 bottom: 0; 1726 } 1727 1728 /* ---- Custom cursor ---- */ 1729 .cursor-point-outline { 1730 width: 36px; 1731 height: 36px; 1732 border: 2px solid #0B1929; 1733 border-radius: 50%; 1734 position: fixed; 1735 pointer-events: none; 1736 z-index: 99999; 1737 transform: translate( -50%, -50% ); 1738 transition: transform 0.15s ease, opacity 0.15s ease; 1739 } 1740 1741 .cursor-point { 1742 width: 8px; 1743 height: 8px; 1744 background-color: #0B1929; 1745 border-radius: 50%; 1746 position: fixed; 1747 pointer-events: none; 1748 z-index: 99999; 1749 transform: translate( -50%, -50% ); 1750 } 1751 1752 /* ---- Responsive: footer columns stack on small screens ---- */ 1753 @media ( max-width: 767px ) { 1754 .footer-widget { 1755 padding: 40px 0 20px; 1756 } 1757 1758 .footer-area { 1759 margin-bottom: 24px; 1760 } 1761 1762 .footer-copyright .col-lg-6 { 1763 text-align: center !important; 1764 } 1765 1766 .footer-copyright .text-md-end { 1767 text-align: center !important; 1768 margin-top: 6px; 1769 } 1770 } 1771 1772 /* ============================================================================= 1773 ST Travel – Containers Styles 1774 ============================================================================= */ 1775 @media (min-width: 1200px) { 1776 #page-wrap .st-header-container, 1777 .st-footer-container, 1778 .container.st-travel-index-wrap, 1779 .container.st-travel-single-wrap, 1780 .container.page-single { 1781 width: 1220px; 1782 max-width: 1220px; 1783 } 1784 } 1785 1786 /* ============================================================================= 1787 ST Travel – Enhanced Dark Header 1788 ============================================================================= */ 1789 1790 /* Header base */ 1791 #masthead { 1792 background-color: #ffffff; 1793 border-bottom: 3px solid #0B1929; 1794 padding: 16px 0; 1795 } 1796 1797 /* Site title */ 1798 .site-logo .site-title, 1799 .site-logo h1.site-title { 1800 font-size: 1.45rem; 1801 margin: 0; 1802 } 1803 1804 .site-logo .site-title a, 1805 .site-logo h1.site-title a { 1806 color: #121111; 1807 font-weight: 700; 1808 letter-spacing: -0.2px; 1809 transition: color 0.2s ease; 1810 } 1811 1812 .site-logo .site-title a:hover { 1813 color: #0B1929; 1814 text-decoration: none; 1815 } 1816 1817 /* Custom logo brightness on dark background */ 1818 .site-logo .custom-logo-link img { 1819 filter: brightness(0) invert(1); 1820 } 1821 1822 /* Desktop nav links on dark background */ 1823 #masthead #site-navigation a { 1824 color: #121111; 1825 } 1826 1827 #masthead #site-navigation ul.nav-menu > li > a { 1828 color: #121111; 1829 font-weight: 500; 1830 padding: 12px 16px; 1831 } 1832 1833 #masthead #site-navigation ul.nav-menu > li:hover > a, 1834 #masthead #site-navigation ul.nav-menu > li > a:hover, 1835 #masthead #site-navigation ul.nav-menu > li > a:focus { 1836 color: #0B1929; 1837 text-decoration: none; 1838 } 1839 1840 #masthead #site-navigation ul.nav-menu .current-menu-item > a { 1841 color: #0B1929; 1842 } 1843 1844 /* Desktop dropdown sub-menus */ 1845 #masthead #site-navigation ul ul { 1846 background-color: #0a2260; 1847 border-top: 2px solid #0B1929; 1848 border-radius: 0 0 8px 8px; 1849 box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25); 1850 } 1851 1852 #masthead #site-navigation ul ul li a { 1853 color: rgba(255, 255, 255, 0.85); 1854 padding: 10px 18px; 1855 border-bottom: 1px solid rgba(255, 255, 255, 0.07); 1856 } 1857 1858 #masthead #site-navigation ul ul li:hover > a, 1859 #masthead #site-navigation ul ul li.focus > a { 1860 background-color: #0B1929; 1861 color: #ffffff; 1862 text-decoration: none; 1863 } 1864 1865 /* Mobile menu toggle button */ 1866 #masthead .menu-toggle { 1867 background: #0B1929; 1868 border: 1px solid rgba(255, 255, 255, 0.3); 1869 border-radius: 6px; 1870 color: #fff; 1871 width: auto; 1872 min-width: 44px; 1873 height: 40px; 1874 padding: 0 12px; 1875 position: static; 1876 transform: none; 1877 top: auto; 1878 right: auto; 1879 float: none; 1880 display: none; 1881 line-height: 1; 1882 } 1883 1884 #masthead .menu-toggle i { 1885 color: #fff; 1886 transition: transform 0.25s ease; 1887 pointer-events: none; 1888 } 1889 1890 #masthead .menu-toggle:hover, 1891 #masthead .menu-toggle:focus { 1892 background: #0B1929; 1893 border-color: #0B1929; 1894 color: #fff; 1895 outline: 2px solid rgba(244, 103, 68, 0.4); 1896 outline-offset: 2px; 1897 } 1898 1899 /* ============================================================================= 1900 Mobile Menu Dropdown – Full-width, flexbox layout 1901 ============================================================================= */ 1902 @media screen and (max-width: 1024px) { 1903 1904 /* Show the toggle button */ 1905 #masthead .menu-toggle { 1906 display: inline-flex; 1907 align-items: center; 1908 justify-content: center; 1909 } 1910 1911 /* Nav is static so ul positions against #masthead (position: relative) */ 1912 #masthead #site-navigation { 1913 position: static; 1914 float: none; 1915 width: auto; 1916 } 1917 1918 /* Full-width dropdown flush with bottom edge of header */ 1919 #masthead #site-navigation ul.nav-menu { 1920 position: absolute; 1921 top: calc(100% + 12px); 1922 left: 0; 1923 right: 0; 1924 width: 100%; 1925 margin: 0; 1926 padding: 0; 1927 background-color: #14287B; 1928 border-top: 3px solid #0B1929; 1929 border-bottom: 3px solid #0B1929; 1930 box-shadow: 0 12px 32px rgba(0, 0, 0, 0.4); 1931 z-index: 99998; 1932 } 1933 1934 /* 1935 * Menu items use flexbox so the link and the toggle button 1936 * sit on the same row, and the sub-menu wraps below them. 1937 * This removes the need for any hardcoded button height. 1938 */ 1939 #masthead #site-navigation ul.nav-menu > li, 1940 #masthead #site-navigation ul.sub-menu > li, 1941 #masthead #site-navigation ul ul > li { 1942 display: flex; 1943 flex-wrap: wrap; 1944 align-items: stretch; 1945 width: 100%; 1946 border-bottom: 1px solid rgba(255, 255, 255, 0.07); 1947 } 1948 1949 #masthead #site-navigation ul.nav-menu > li:last-child, 1950 #masthead #site-navigation ul.sub-menu > li:last-child, 1951 #masthead #site-navigation ul ul > li:last-child { 1952 border-bottom: none; 1953 } 1954 1955 /* Links fill remaining row width — no extra right-padding needed */ 1956 #masthead #site-navigation ul.nav-menu > li > a { 1957 flex: 1; 1958 min-width: 0; 1959 display: block; 1960 padding: 14px 20px; 1961 color: rgba(255, 255, 255, 0.88); 1962 font-size: 0.95rem; 1963 font-weight: 500; 1964 border-left: 3px solid transparent; 1965 text-decoration: none; 1966 transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease; 1967 } 1968 1969 #masthead #site-navigation ul.nav-menu > li > a:hover, 1970 #masthead #site-navigation ul.nav-menu > li:hover > a, 1971 #masthead #site-navigation ul.nav-menu > li > a:focus { 1972 background: rgba(255, 255, 255, 0.06); 1973 border-left-color: #0B1929; 1974 color: #ffffff; 1975 text-decoration: none; 1976 } 1977 1978 /* Current / active item */ 1979 #masthead #site-navigation ul.nav-menu > li.current-menu-item > a, 1980 #masthead #site-navigation ul.nav-menu > li.current-menu-ancestor > a { 1981 border-left-color: #0B1929; 1982 color: #0B1929; 1983 } 1984 1985 /* 1986 * Sub-menu toggle button: a flex item in the same row as the link. 1987 * Height always equals the link row height via align-items: stretch 1988 * on the parent li — no hardcoded px value needed. 1989 */ 1990 #masthead #site-navigation button.dropdown-toggle { 1991 position: static; 1992 height: auto; 1993 line-height: normal; 1994 flex-shrink: 0; 1995 width: 50px; 1996 background: rgba(255, 255, 255, 0.04); 1997 border: none; 1998 border-left: 1px solid rgba(255, 255, 255, 0.08); 1999 border-radius: 0; 2000 color: rgba(255, 255, 255, 0.6); 2001 display: flex; 2002 align-items: center; 2003 justify-content: center; 2004 padding: 0; 2005 cursor: pointer; 2006 transition: background 0.2s ease, color 0.2s ease; 2007 } 2008 2009 #masthead #site-navigation button.dropdown-toggle:hover, 2010 #masthead #site-navigation button.dropdown-toggle:focus { 2011 background: #0B1929; 2012 color: #fff; 2013 outline: none; 2014 } 2015 2016 #masthead #site-navigation button.dropdown-toggle .fa { 2017 color: inherit; 2018 font-size: 14px; 2019 transition: transform 0.25s ease; 2020 pointer-events: none; 2021 } 2022 2023 #masthead #site-navigation button.dropdown-toggle.active .fa { 2024 transform: rotate(180deg); 2025 } 2026 2027 /* 2028 * Sub-menus: flex-basis 100% wraps them onto their own row below 2029 * the link + button. display: none is explicit so jQuery's slideToggle 2030 * always starts from a known hidden state on first page load. 2031 */ 2032 #masthead #site-navigation ul.sub-menu, 2033 #masthead #site-navigation ul ul { 2034 display: none; 2035 flex-basis: 100%; 2036 position: static; 2037 float: none; 2038 box-shadow: none; 2039 width: 100%; 2040 background: rgba(0, 0, 0, 0.25); 2041 border-top: 1px solid rgba(255, 255, 255, 0.06); 2042 border-left: none; 2043 border-radius: 0; 2044 } 2045 2046 /* Sub-level link style */ 2047 #masthead #site-navigation ul.sub-menu > li > a, 2048 #masthead #site-navigation ul ul > li > a { 2049 flex: 1; 2050 min-width: 0; 2051 display: block; 2052 padding: 12px 20px 12px 36px; 2053 color: rgba(255, 255, 255, 0.72); 2054 font-size: 0.875rem; 2055 border-left: 3px solid transparent; 2056 transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease; 2057 } 2058 2059 #masthead #site-navigation ul.sub-menu > li > a:hover, 2060 #masthead #site-navigation ul ul > li > a:hover, 2061 #masthead #site-navigation ul.sub-menu > li > a:focus, 2062 #masthead #site-navigation ul ul > li > a:focus { 2063 background: rgba(255, 255, 255, 0.05); 2064 border-left-color: #0B1929; 2065 color: #fff; 2066 text-decoration: none; 2067 } 2068 } 2069 @media (max-width: 767px) { 2070 /* Full-width dropdown flush with bottom edge of header */ 2071 #masthead #site-navigation ul.nav-menu { 2072 top: calc(100% + 0px); 2073 width: 100vw; 2074 left: 0; 2075 } 2076 /* Nav column flex layout */ 2077 .st-nav-col { 2078 position: static; 2079 gap: 0; 2080 } 2081 } /* end @media (max-width: 767px) */ 2082 2083 /* --- Header Search --- */ 2084 .st-header-search-wrap { 2085 position: relative; 2086 margin-left: 14px; 2087 flex-shrink: 0; 2088 } 2089 2090 #masthead .st-header-search-toggle { 2091 display: inline-flex; 2092 align-items: center; 2093 gap: 6px; 2094 background: #0B1929; 2095 border: none; 2096 color: #ffffff; 2097 border-radius: 8px; 2098 padding: 8px 16px; 2099 font-size: 0.83rem; 2100 font-weight: 500; 2101 cursor: pointer; 2102 transition: background 0.2s ease, transform 0.15s ease; 2103 white-space: nowrap; 2104 line-height: 1; 2105 } 2106 2107 #masthead .st-header-search-toggle:hover, 2108 #masthead .st-header-search-toggle:focus { 2109 background: #C8922A; 2110 color: #ffffff; 2111 transform: scale(1.03); 2112 outline: 2px solid rgba(244, 103, 68, 0.4); 2113 outline-offset: 2px; 2114 } 2115 2116 .st-search-label { 2117 display: none; 2118 } 2119 2120 @media screen and (min-width: 1025px) { 2121 .st-search-label { 2122 display: inline; 2123 } 2124 } 2125 2126 /* Search dropdown box */ 2127 .st-header-search-box { 2128 position: absolute; 2129 top: calc(100% + 12px); 2130 right: 0; 2131 background: #ffffff; 2132 padding: 16px; 2133 border-radius: 10px; 2134 box-shadow: 0 10px 36px rgba(0, 0, 0, 0.2); 2135 min-width: 290px; 2136 z-index: 99999; 2137 border-top: 3px solid #0B1929; 2138 } 2139 2140 .st-header-search-box::before { 2141 content: ''; 2142 position: absolute; 2143 top: -9px; 2144 right: 18px; 2145 width: 0; 2146 height: 0; 2147 border-left: 8px solid transparent; 2148 border-right: 8px solid transparent; 2149 border-bottom: 6px solid #0B1929; 2150 } 2151 2152 .st-header-search-box #searchform div { 2153 display: flex; 2154 gap: 8px; 2155 align-items: center; 2156 } 2157 2158 .st-header-search-box input[type="text"] { 2159 flex: 1; 2160 width: auto; 2161 border: 1px solid #dde1ea; 2162 border-radius: 6px; 2163 padding: 8px 12px; 2164 font-size: 0.875rem; 2165 color: #333; 2166 background: #f8f9fc; 2167 } 2168 2169 .st-header-search-box input[type="text"]:focus { 2170 border-color: #C8922A; 2171 background: #fff; 2172 outline: none; 2173 } 2174 2175 .st-header-search-box input[type="submit"] { 2176 background: #0B1929; 2177 border: none; 2178 color: #ffffff; 2179 border-radius: 6px; 2180 padding: 8px 16px; 2181 font-size: 0.875rem; 2182 font-weight: 600; 2183 cursor: pointer; 2184 white-space: nowrap; 2185 flex-shrink: 0; 2186 transition: background 0.2s ease; 2187 } 2188 2189 .st-header-search-box input[type="submit"]:hover { 2190 background: #C8922A; 2191 color: #fff; 2192 } 2193 2194 /* Mobile search box positioning */ 2195 @media screen and (max-width: 767px) { 2196 .st-header-search-box { 2197 right: -10px; 2198 min-width: 260px; 2199 } 2200 2201 #masthead .st-header-search-toggle { 2202 padding: 7px 10px; 2203 } 2204 } 2205 2206 /* ============================================================================= 2207 ST Travel – Enhanced Blog Index & Visual Polish 2208 ============================================================================= */ 2209 2210 /* --- Page background (color set via custom-background default in functions.php) --- */ 2211 #skip-link-target { 2212 min-height: 60vh; 2213 } 2214 2215 .container.st-travel-index-wrap { 2216 padding-top: 10px; 2217 padding-bottom: 60px; 2218 } 2219 2220 /* --- Blog section header --- */ 2221 .st-blog-section-header { 2222 margin-bottom: 35px; 2223 } 2224 2225 .st-blog-section-header h2 { 2226 font-size: 1.15rem; 2227 font-weight: 700; 2228 color: #161921; 2229 margin: 0 0 10px; 2230 text-transform: uppercase; 2231 letter-spacing: 0.8px; 2232 } 2233 2234 .st-section-divider { 2235 display: flex; 2236 align-items: center; 2237 gap: 10px; 2238 margin-bottom: 6px; 2239 } 2240 2241 .st-section-divider::before { 2242 content: ''; 2243 display: block; 2244 width: 44px; 2245 height: 3px; 2246 background-color: #0B1929; 2247 border-radius: 2px; 2248 flex-shrink: 0; 2249 } 2250 2251 .st-section-divider::after { 2252 content: ''; 2253 display: block; 2254 flex: 1; 2255 height: 1px; 2256 background-color: #e2e6ed; 2257 } 2258 2259 /* --- Post Cards: shadow, radius, hover lift --- */ 2260 /* Scoped to .col-md-6 parent to beat Bootstrap's .card border without !important */ 2261 .col-md-6 .st-travel-post-card { 2262 border: none; 2263 border-radius: 12px; 2264 box-shadow: 0 2px 14px rgba(0, 0, 0, 0.07); 2265 overflow: hidden; 2266 transition: opacity 0.8s ease-out, transform 0.8s ease-out, box-shadow 0.3s ease; 2267 background: #fff; 2268 } 2269 2270 .col-md-6 .st-travel-post-card.visible:hover { 2271 transform: translateY(-6px); 2272 box-shadow: 0 14px 36px rgba(0, 0, 0, 0.13); 2273 } 2274 2275 /* Featured image – consistent height */ 2276 .st-travel-post-card .card-img-top { 2277 height: 188px; 2278 object-fit: cover; 2279 width: 100%; 2280 } 2281 2282 /* Image placeholder when no thumbnail */ 2283 .st-post-img-placeholder { 2284 height: 188px; 2285 background: linear-gradient(135deg, #eef2ff 0%, #dce8fd 100%); 2286 display: flex; 2287 align-items: center; 2288 justify-content: center; 2289 color: #C8922A; 2290 font-size: 2.8rem; 2291 opacity: 0.35; 2292 } 2293 2294 /* Category label above the title */ 2295 .st-card-category-label { 2296 display: inline-block; 2297 font-size: 0.68rem; 2298 font-weight: 700; 2299 text-transform: uppercase; 2300 letter-spacing: 0.8px; 2301 color: #0B1929; 2302 margin-bottom: 5px; 2303 } 2304 2305 /* Card body */ 2306 .st-travel-post-card .card-body { 2307 padding: 1.1rem 1.15rem 0.65rem; 2308 } 2309 2310 /* Card title */ 2311 .st-travel-post-card .card-title { 2312 font-size: 0.975rem; 2313 font-weight: 600; 2314 line-height: 1.4; 2315 margin-bottom: 0.45rem; 2316 } 2317 2318 .st-travel-post-card .card-title a { 2319 color: #161921; 2320 transition: color 0.2s ease; 2321 } 2322 2323 .st-travel-post-card .card-title a:hover { 2324 color: #0B1929; 2325 text-decoration: none; 2326 } 2327 2328 /* Card excerpt */ 2329 .st-travel-post-card .card-text { 2330 font-size: 0.845rem; 2331 color: #666; 2332 line-height: 1.65; 2333 margin-bottom: 0; 2334 } 2335 2336 /* Card footer — two-class chain beats Bootstrap's single .card-footer */ 2337 .st-travel-post-card .card-footer { 2338 background-color: #fafbfc; 2339 border-top: 1px solid #f0f0f0; 2340 padding: 0.7rem 1.15rem; 2341 } 2342 2343 .st-travel-post-card .card-footer .text-muted { 2344 font-size: 0.775rem; 2345 color: #999; 2346 } 2347 2348 /* Read More – pill shape; a + two classes beats Bootstrap's btn specificity */ 2349 a.btn.st-read-more-btn { 2350 border-radius: 20px; 2351 font-size: 0.78rem; 2352 padding: 4px 15px; 2353 letter-spacing: 0.2px; 2354 } 2355 2356 /* --- Sidebar widgets --- 2357 .sidebar-area prefix adds class specificity to override theme defaults cleanly */ 2358 .sidebar-area .widget-categories, 2359 .sidebar-area .widget-recent-posts, 2360 .sidebar-area .widget-tags { 2361 border-radius: 12px; 2362 overflow: hidden; 2363 } 2364 2365 .sidebar-area .widget-categories .widget-title, 2366 .sidebar-area .widget-recent-posts .widget-title, 2367 .sidebar-area .widget-tags .widget-title { 2368 font-size: 0.825rem; 2369 text-transform: uppercase; 2370 letter-spacing: 1px; 2371 color: #161921; 2372 padding-bottom: 10px; 2373 margin-bottom: 14px; 2374 border-bottom: 2px solid #0B1929; 2375 position: relative; 2376 } 2377 2378 /* Category list items 2379 Three-class chain beats Bootstrap .list-group-item (one class) */ 2380 .sidebar-area .widget-categories ul.list-group .list-group-item { 2381 border: none; 2382 border-radius: 8px; 2383 margin-bottom: 5px; 2384 padding: 8px 12px; 2385 background-color: #f8f9fc; 2386 transition: background-color 0.2s ease, transform 0.2s ease; 2387 } 2388 2389 .sidebar-area .widget-categories ul.list-group .list-group-item:hover { 2390 background-color: #eef2ff; 2391 transform: translateX(4px); 2392 } 2393 2394 .sidebar-area .widget-categories ul.list-group .list-group-item a { 2395 font-size: 0.875rem; 2396 color: #333; 2397 font-weight: 500; 2398 text-decoration: none; 2399 } 2400 2401 .sidebar-area .widget-categories ul.list-group .list-group-item a:hover { 2402 color: #C8922A; 2403 } 2404 2405 /* Recent posts */ 2406 .sidebar-area .widget-recent-posts li.media { 2407 padding: 9px 0; 2408 border-bottom: 1px solid #f0f0f0; 2409 align-items: flex-start; 2410 gap: 10px; 2411 } 2412 2413 .sidebar-area .widget-recent-posts li.media:last-child { 2414 border-bottom: none; 2415 } 2416 2417 /* img: element + two-class chain beats any single-class rule */ 2418 .sidebar-area .widget-recent-posts .media img { 2419 width: 60px; 2420 height: 60px; 2421 object-fit: cover; 2422 border-radius: 8px; 2423 flex-shrink: 0; 2424 } 2425 2426 .sidebar-area .widget-recent-posts .media-body h5 { 2427 font-size: 0.825rem; 2428 line-height: 1.4; 2429 margin: 0; 2430 } 2431 2432 .sidebar-area .widget-recent-posts .media-body h5 a { 2433 color: #333; 2434 transition: color 0.2s ease; 2435 text-decoration: none; 2436 } 2437 2438 .sidebar-area .widget-recent-posts .media-body h5 a:hover { 2439 color: #0B1929; 2440 } 2441 2442 /* Tags — a + two classes beats Bootstrap .btn (one class) */ 2443 .sidebar-area .widget-tags a.btn.st-tags-btn { 2444 border-radius: 20px; 2445 font-size: 0.75rem; 2446 padding: 3px 12px; 2447 } 2448 2449 /* Sidebar spacing */ 2450 .sidebar-area { 2451 padding-left: 20px; 2452 } -
st-travel/1.1/template-parts/content/posts-card.php
r353330 r356260 1 <?php 2 // Category label (first category only) 3 $st_categories = get_the_category(); 4 $st_cat_label = ! empty( $st_categories ) ? $st_categories[0]->name : ''; 5 $st_cat_link = ! empty( $st_categories ) ? get_category_link( $st_categories[0]->term_id ) : ''; 6 ?> 7 1 8 <?php if ( has_post_thumbnail() ) : ?> 2 <a href="<?php echo esc_url( get_permalink() ); ?>"> 3 <?php the_post_thumbnail('medium', ['class' => 'card-img-top img-fluid']); ?> 4 </a> 5 <?php endif; ?> 6 <div class="card-body"> 7 <h5 class="card-title"> 8 <a href="<?php echo esc_url( get_the_permalink() ); ?>"><?php the_title(); ?></a> 9 </h5> 10 <p class="card-text"><?php echo esc_html( wp_trim_words( get_the_excerpt(), 50, '...' ) ); ?></p> 11 </div> 12 <div class="card-footer"> 13 <small class="text-muted"> 14 <?php the_time( get_option( 'date_format' ) ); ?> / 15 <?php 16 comments_popup_link( 17 esc_html__( '0 Comments', 'st-travel' ), 18 esc_html__( '1 Comment', 'st-travel' ), 19 esc_html__( '% Comments', 'st-travel' ), 20 'post-comments' 21 ); 22 ?> 23 </small> 24 <a href="<?php echo esc_url( get_permalink() ); ?>" class="btn btn-primary float-right st-read-more-btn"> 25 <?php esc_html_e( 'Read more', 'st-travel' ); ?> 26 </a> 27 </div> 9 <a href="<?php echo esc_url( get_permalink() ); ?>"> 10 <?php the_post_thumbnail( 'medium', array( 'class' => 'card-img-top img-fluid' ) ); ?> 11 </a> 12 <?php else : ?> 13 <a href="<?php echo esc_url( get_permalink() ); ?>" class="st-post-img-placeholder" aria-hidden="true"> 14 ✍ 15 </a> 16 <?php endif; ?> 17 18 <div class="card-body"> 19 <?php if ( $st_cat_label ) : ?> 20 <a href="<?php echo esc_url( $st_cat_link ); ?>" class="st-card-category-label"><?php echo esc_html( $st_cat_label ); ?></a> 21 <?php endif; ?> 22 <h5 class="card-title"> 23 <a href="<?php echo esc_url( get_the_permalink() ); ?>"><?php the_title(); ?></a> 24 </h5> 25 <p class="card-text"><?php echo wp_trim_words( get_the_excerpt(), 20, '...' ); ?></p> 26 </div> 27 28 <div class="card-footer"> 29 <small class="text-muted"> 30 <?php the_time( get_option( 'date_format' ) ); ?> / 31 <?php 32 comments_popup_link( 33 esc_html__( '0 Comments', 'st-travel' ), 34 esc_html__( '1 Comment', 'st-travel' ), 35 esc_html__( '% Comments', 'st-travel' ), 36 'post-comments' 37 ); 38 ?> 39 </small> 40 <a href="<?php echo esc_url( get_permalink() ); ?>" class="btn btn-primary float-right st-read-more-btn"> 41 <?php esc_html_e( 'Read more', 'st-travel' ); ?> 42 </a> 43 </div> -
st-travel/1.1/template-parts/sidebar/categories.php
r353330 r356260 1 1 <div class="widget widget-categories"> 2 2 <h3 class="widget-title font-weight-bold"><?php esc_html_e( 'Categories', 'st-travel' ); ?></h3> 3 <hr>4 3 <ul class="list-group"> 5 4 <?php … … 10 9 11 10 foreach( $st_travel_categories as $st_travel_category ) { 12 echo '<li class="list-group-item d-flex justify-content-between align-items-center bg-light mb-2 rounded">';11 echo '<li class="list-group-item d-flex justify-content-between align-items-center mb-2">'; 13 12 echo '<a href="' . esc_url( get_category_link( $st_travel_category->term_id ) ) . '">' . esc_html( $st_travel_category->name ) . '</a>'; 14 13 echo '<span class="badge badge-primary badge-pill st-travel-cat-badge">' . esc_html( $st_travel_category->count ) . '</span>'; -
st-travel/1.1/template-parts/sidebar/post-list.php
r353330 r356260 1 1 <div class="widget widget-recent-posts"> 2 2 <h3 class="widget-title font-weight-bold"><?php esc_html_e( 'Recent Posts', 'st-travel' ); ?></h3> 3 <hr>4 3 <ul class="list-unstyled"> 5 4 <?php … … 12 11 <li class="media mb-3"> 13 12 <a class="w-25" href="<?php echo esc_url( get_permalink($st_travel_post_item['ID']) ); ?>"> 14 <?php echo wp_kses_post( get_the_post_thumbnail( $st_travel_post_item['ID'], 'thumbnail', array( 'class' => 'mr-3 rounded' ) )); ?>13 <?php echo get_the_post_thumbnail( $st_travel_post_item['ID'], 'thumbnail', ['class' => 'mr-3 rounded'] ); ?> 15 14 </a> 16 15 <div class="media-body"> -
st-travel/1.1/template-parts/sidebar/tags.php
r353330 r356260 1 1 <div class="widget widget-tags"> 2 2 <h3 class="widget-title font-weight-bold"><?php esc_html_e( 'Tags', 'st-travel' ); ?></h3> 3 <hr>4 3 <div class="tagcloud"> 5 4 <ul class="list-inline">
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)