Make WordPress Themes

Changeset 356260


Ignore:
Timestamp:
10/30/2026 08:44:13 AM (5 hours ago)
Author:
themedropbox
Message:

New version of ST Travel - 1.1

Location:
st-travel/1.1
Files:
7 added
3 deleted
16 edited
1 copied

Legend:

Unmodified
Added
Removed
  • st-travel/1.1/assets/js/script.js

    r353330 r356260  
    1717
    1818  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      }
    2132  });
    2233
    … …  
    2536  $('button.dropdown-toggle').click(function() {
    2637      $(this).toggleClass('active');
    27      $(this).parent().find('.sub-menu').first().slideToggle();
     38     $(this).parent().children('.sub-menu').slideToggle( 280 );
    2839  });
    2940
    3041
    3142
    32   if( $(window).width() < 1024 ) {
     43  if( $(window).width() <= 1024 ) {
    3344      $('#primary-menu').find("li").last().bind( 'keydown', function(e) {
    3445          if( !e.shiftKey && e.which === 9 ) {
    … …  
    4354
    4455  $(window).resize(function() {
    45       if( $(window).width() < 1024 ) {
     56      if( $(window).width() <= 1024 ) {
    4657          $('#primary-menu').find("li").last().bind( 'keydown', function(e) {
    4758              if( !e.shiftKey && e.which === 9 ) {
    … …  
    7687});
    7788
     89window.onload = function() {
     90  document.getElementById("st-travel-loader-container").style.display = "flex";
     91};
    7892window.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  } );
    8496});
    8597
  • 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>
    436
    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>
    1244
    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>
    1654
    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>
    18119
    19120<?php wp_footer(); ?>
  • st-travel/1.1/functions.php

    r353330 r356260  
    11<?php
    22
    3 /* 
     3/*
    44** Sets up theme defaults and registers support for various WordPress features
    55*/
    66
    7 define( 'IS_ST_FREEMIUM', 'st-travel' );
     7require_once get_template_directory() . '/inc/customizer.php';
     8
     9define('IS_ST_FREEMIUM', 'st-travel');
    810
    911function 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               
    1413        // Add default posts and comments RSS feed links to head
    1514        add_theme_support( 'automatic-feed-links' );
    … …  
    4140
    4241        // Add theme support for Custom Background.
    43         add_theme_support( 'custom-background', ['default-color' => ''] );
     42        add_theme_support( 'custom-background', ['default-color' => 'f5f7fb'] );
    4443
    4544        // Set the default content width.
    … …  
    6867        add_theme_support( 'align-wide' );
    6968
     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
    7079        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' );
    7186}
    7287
    … …  
    7893function st_travel_demo_importer_scripts() {
    7994
    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 
    8995        // 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' );
    9197
    9298        // Remove prefix from Font Awesome
    9399        wp_enqueue_style(
    94                 'fontawesome-css',
     100                'fontawesome-css', // Corrected handle
    95101                get_template_directory_uri() . '/assets/css/fontawesome-all.css',
    96102                array(),
    97                 '6.5.2'
     103                '4.5.0'
    98104        );
    99105       
    … …  
    106112       
    107113        wp_enqueue_script('st-travel-custom-script', get_template_directory_uri() . '/assets/js/script.js', array('jquery'), '1.0', true);
    108        
     114
    109115        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        ) );
    110121}
    111122add_action( 'wp_enqueue_scripts', 'st_travel_demo_importer_scripts' );
    112123
    113124/*
     125** Register widget areas including 4 footer widget columns
     126*/
     127function 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}
     220add_action( 'widgets_init', 'st_travel_widgets_init' );
     221
     222function 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}
     226add_action('admin_enqueue_scripts', 'st_travel_enqueue_admin_script');
     227
     228/*
    114229** Notices
    115230*/
    116231require_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' );
     232require_once get_parent_theme_file_path( '/inc/activation/class-rating-notice.php' );
    122233
    123234add_action( 'after_switch_theme', 'st_travel_activation_time');
    … …  
    130241}
    131242
    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' );
     243function 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}
     255add_action('wp_head', 'st_travel_custom_loader');
    151256
    152257/*
    … …  
    185290    <?php
    186291}
     292
     293
     294
     295
     296/* =============================================================================
     297   ST Travel – header Topbar Customizer Options
     298   ============================================================================= */
  • st-travel/1.1/header.php

    r353330 r356260  
    2121        <a class="skip-link screen-reader-text" href="#skip-link-target"><?php esc_html_e( 'Skip to content', 'st-travel' ); ?></a>
    2222
    23         <header id="masthead" class="site-header header py-4 sticky-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">
    2525
    2626                <!-- Display Custom Header Image -->
    2727                <?php if ( get_header_image() ) : ?>
    2828                    <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 ); ?>"
    3232                             alt="<?php esc_attr_e( 'Header Image', 'st-travel' ); ?>" />
    3333                    </div>
    3434                <?php endif; ?>
    3535
    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">
    4948                                        <?php echo esc_html( get_bloginfo( 'name' ) ); ?>
    5049                                    </a>
    5150                                </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; ?>
    5751                            <?php endif; ?>
    5852                        </div>
    5953                    </div>
    6054
    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
    6258                        <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>
    6561                            </button>
    6662                            <?php
    … …  
    7369                            ?>
    7470                        </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 -->
    7793        </header><!-- #masthead -->
    7894
     95    </div><!-- #page-wrap -->
     96
  • st-travel/1.1/inc/activation/class-welcome-notice.php

    r353330 r356260  
    2929                // Install Plugins
    3030                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;
    3138        }
    3239
    … …  
    140147
    141148        /**
     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        /**
    142180        ** Activate a plugin.
    143181        */
    … …  
    162200        */
    163201        public function st_travel_install_activate_st_demo_importer() {
    164                 check_ajax_referer( 'st_travel_install_importer', 'nonce' );
     202                check_ajax_referer( 'nonce', 'nonce' );
    165203
    166204                if ( ! current_user_can( 'install_plugins' ) ) {
    … …  
    197235        */
    198236        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         }
    212237
    213238        $screen = get_current_screen();
    … …  
    255280                        </h1>
    256281                        <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'); ?>
    258283                        </p>
    259284                        <div class="st-travel-action-buttons">
    260285                                <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); ?>">
    261286                                        <?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'); ?>
    262294                                </a>
    263295                        </div>
    … …  
    280312        check_ajax_referer('sb_dismiss_notice_nonce', 'nonce');
    281313
    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;
    284316        }
    285317
    … …  
    293325        */
    294326        public function st_travel_notice_enqueue_scripts( $page ) {
    295                 if ( ! in_array( $page, array( 'themes.php', 'plugins.php' ), true ) ) {
    296                         return;
    297                 }
    298                
    299327                wp_enqueue_script( 'jquery' );
    300328
    … …  
    310338                                                action: 'sb_st_travel_dismissed_handler',
    311339                                                notice: $( this ).closest( '.st-travel-notice' ).data( 'notice' ),
    312                         nonce: '<?php echo esc_attr( $nonce ); ?>', // Pass the nonce here
     340                        nonce: '<?php echo $nonce; ?>', // Pass the nonce here
    313341                                        });
    314342                                        $( '.st-travel-notice' ).hide();
    … …  
    332360                $screen_base = ( $screen && isset( $screen->base ) ) ? $screen->base : '';
    333361
    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 );
    359376        }
    360377
  • st-travel/1.1/inc/activation/css/welcome-notice.css

    r353330 r356260  
    11.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  
    11<?php
    22/**
    3  * ST Travel Theme Customizer.
     3 * ST Travel Theme Customizer
    44 */
    55
    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 
    156/**
    16  * Register Customizer settings and controls.
     7 * Register customizer settings.
    178 */
    189function st_travel_customize_register( $wp_customize ) {
    1910
    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,
    2417        ) );
    2518
    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',
    3023                'transport'         => 'refresh',
    3124        ) );
    3225
    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                )
    3849        ) );
    3950}
    4051add_action( 'customize_register', 'st_travel_customize_register' );
     52
     53
     54/**
     55 * Output dynamic loader CSS based on customizer values.
     56 */
     57function 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}
     68add_action( 'wp_head', 'st_travel_loader_customizer_css' );
  • st-travel/1.1/index.php

    r353330 r356260  
    66        <div class="row">
    77
     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
    815            <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
    937                <div class="row">
    1038                    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    … …  
    2654                    <?php endif; ?>
    2755
    28                     <!-- Pagination -->
    29                     <?php the_posts_pagination(); ?>
    3056                </div>
     57                <!-- Pagination -->
     58                <?php the_posts_pagination(); ?>
    3159            </div>
    3260
  • st-travel/1.1/page.php

    r353330 r356260  
    2020                                if ( get_the_title() !== '' ) {
    2121                                        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>';
    2323                                        echo '</header>';
    2424                                }
  • st-travel/1.1/readme.txt

    r353330 r356260  
    22
    33Author: KristynaBennett
    4 Requires at least: 6.0
    5 Tested up to: 7.1
    6 Requires PHP: 7.4
    7 Version: 1.0
     4Requires at least: WordPress 4.7+
     5Tested up to: WordPress 7.1
     6Version: 1.1
    87License: GPLv3 or later
    98License 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-ready
     9Tags: blog, one-column, custom-background, custom-colors, full-width-template, custom-menu, custom-logo, featured-images, sticky-post, theme-options, threaded-comments, translation-ready
    1110
    1211
    … …  
    1413 
    1514STTravel 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
    1616
    1717== Copyright ==
    … …  
    3737* navigation.js - Licensed under GPLv2 or later ( Applies to navigation.js file in /st-travel/assets/js/ )
    3838
     39
    3940== Icons ==
    4041
    … …  
    4546== Fonts ==
    4647
    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
     48The ST Travel theme uses the following fonts:
     49
     501. **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
     542. **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
     583. **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   
     624. **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
    5265
    5366
    5467== Changelog ==
    5568
     69Version 1.1
     70        - Bug Fixes.
     71   
    5672Version 1.0
    5773        - Initial Release.
     74
    5875
    5976ST Travel the following third-party resources:
    … …  
    6279
    6380License         : CC0 1.0 Universal (CC0 1.0)
    64 License URI : https://pxhere.com/en/license
    65 Source          : https://pxhere.com/en/photo/1200073
     81License URI : https://stocksnap.io/license
     82Source          : https://stocksnap.io/photo/smiling-woman-KS92MVGSXY
    6683
    6784Created by Strivio themes Team and released under Creative Commons ( CC0 ) License.
    6885
    69 https://striviothemes.com/preview/st-travel-pro/wp-content/uploads/sites/25/2026/10/header-logo.png
     86https://striviothemes.com/preview/st-travel-pro/wp-content/uploads/sites/8/2026/03/hero-icon-1.svg
     87https://striviothemes.com/preview/st-travel-pro/wp-content/uploads/sites/8/2026/03/hero-icon-2.svg
     88https://striviothemes.com/preview/st-travel-pro/wp-content/uploads/sites/8/2026/04/header-logo-1.png
     89https://striviothemes.com/demo/st-demo-importer-imgs/available.png
     90https://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  
    1818                    <h1 class="post-title"><?php the_title(); ?></h1>
    1919
    20                     <?php echo '<div class="post-categories">' . wp_kses_post( get_the_category_list( ',&nbsp;&nbsp;' ) ) . ' </div>'; ?>
     20                    <?php echo '<div class="post-categories">' . get_the_category_list( ',&nbsp;&nbsp;' ) . ' </div>'; ?>
    2121
    2222                    <div class="post-meta">
    … …  
    4747                    $st_travel_tag_list = get_the_tag_list( '<div class="post-tags">','','</div>');
    4848                    if ( $st_travel_tag_list ) {
    49                         echo wp_kses_post( $st_travel_tag_list );
     49                        echo ''. $st_travel_tag_list;
    5050                    }
    5151                    ?>
  • st-travel/1.1/style.css

    r353330 r356260  
    11/*
    22Theme Name: ST Travel
    3 Theme URI: https://striviothemes.com/product/st-travel/
     3Theme URI: https://striviothemes.com/product/free-travel-wordpress-theme/
    44Author: KristynaBennett
    55Author URI: https://striviothemes.com/
    66Description: 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.0
    8 Requires at least: 6.0
    9 Requires PHP: 7.4
    10 Tested up to: 7.1
     7Version: 1.1
     8Requires at least: 4.7
     9Requires PHP: 5.2
     10Tested up to: 7.0
    1111License: GNU General Public License v3 or later.
    1212License URI: https://www.gnu.org/licenses/gpl-3.0.html
    1313Text 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
     14Tags: blog, one-column, custom-background, custom-colors, full-width-template, custom-menu, custom-logo, featured-images, sticky-post, theme-options, threaded-comments, translation-ready
    1615*/
    1716
    … …  
    3332        font-size: 1rem;
    3433        font-weight: 400;
    35         line-height: 1.5;
     34        line-height: 1.6;
    3635        color: #333333;
    3736        background-color: #fff;
    … …  
    104103a {
    105104        background-color: transparent;
    106         color: #0A1A2F;
     105        color: #C8922A;
    107106        text-decoration: none;
    108107}
    … …  
    210209.st-travel-single-wrap a,.page-single a,.comment-content a,.woocommerce-product-details__short-description a, #tab-description a,.extra-home-content a {
    211210        text-decoration: underline;
    212         color:#0A1A2F;
     211        color:#C8922A;
    213212}
    214213
    … …  
    652651
    653652/* Theme Styles Start */
    654 
    655653#page .st-home-page {
    656654        overflow: hidden;
    … …  
    753751}
    754752
    755 .footer-copyright {
    756         text-align: center;
    757         padding: 30px 0;
    758 }
    759 
    760753.site-logo a,
    761754.st-travel-post .read-more a,
    … …  
    764757}
    765758
    766 /* 404 Page */
    767 .page-404 {
    768         padding: 5em 0px;
    769 }
    770 .page-404 h2, .page-404 p {
    771         text-align: center;
    772 }
     759
    773760/* Menu Styles Start */
    774761
    … …  
    800787    width: 100%;
    801788    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;    }
    803805}
    804806
    … …  
    857859
    858860.st-read-more-btn{
    859         background: #0B1929;;
     861        background: #0B1929;
    860862        border: none;
    861         -webkit-text-fill-color: #ffffff !important;
     863        -webkit-text-fill-color: #fff !important;
    862864        -webkit-background-clip: inherit !important;
    863865}
    864866
    865867.st-read-more-btn:hover{
    866         background: #FFA663;;
     868        background: #C8922A;
    867869        transform: scale(1.05);
    868870}
    … …  
    874876.st-travel-cat-badge{
    875877        color: #fff;
    876         background: #0B1929;;
     878        background: #0B1929;
    877879}
    878880/* post card css end */
    … …  
    923925    border-radius: 4px 0px 0px 0px;
    924926    opacity: 0px;
    925     background: #0B1929;;
     927    background: #0B1929;
    926928    color: #fff;
    927929   
    … …  
    985987}
    986988
    987 @media screen and (min-width : 768px) and (max-width : 1023px) {
     989@media screen and (min-width : 768px) and (max-width : 1024px) {
    988990       
    989991        .hero-form label {
    … …  
    13311333        padding: 15px;
    13321334}
    1333 @media screen and (min-width: 1024px) {
     1335@media screen and (min-width: 1025px) {
    13341336        .main-navigation {
    13351337            display: block;
    13361338            position: relative;
    13371339            float: right;
    1338             width: 70%;
     1340            width: 58%;
    13391341        }
    13401342    .main-navigation .menu-item-has-children > a:after {
    … …  
    14551457}
    14561458
    1457 @media screen and (max-width: 1023px) {
     1459@media screen and (max-width: 1024px) {
    14581460        .main-navigation ul.nav-menu {
    14591461            margin-right: 0;
    … …  
    15061508        }
    15071509}
     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 */
     2349a.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
    18<?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        &#9997;
     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  
    11<div class="widget widget-categories">
    22                    <h3 class="widget-title font-weight-bold"><?php esc_html_e( 'Categories', 'st-travel' ); ?></h3>
    3                     <hr>
    43                    <ul class="list-group">
    54                        <?php
    … …  
    109
    1110                        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">';
    1312                            echo '<a href="' . esc_url( get_category_link( $st_travel_category->term_id ) ) . '">' . esc_html( $st_travel_category->name ) . '</a>';
    1413                            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  
    11<div class="widget widget-recent-posts">
    22                    <h3 class="widget-title font-weight-bold"><?php esc_html_e( 'Recent Posts', 'st-travel' ); ?></h3>
    3                     <hr>
    43                    <ul class="list-unstyled">
    54                        <?php
    … …  
    1211                            <li class="media mb-3">
    1312                                <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'] ); ?>
    1514                                </a>
    1615                                <div class="media-body">
  • st-travel/1.1/template-parts/sidebar/tags.php

    r353330 r356260  
    11<div class="widget widget-tags">
    22                    <h3 class="widget-title font-weight-bold"><?php esc_html_e( 'Tags', 'st-travel' ); ?></h3>
    3                     <hr>
    43                    <div class="tagcloud">
    54                        <ul class="list-inline">
Note: See TracChangeset for help on using the changeset viewer.