【网站建设】WordPress 页脚添加站点运行时长

正如标题所示,在 WordPress 博客的页脚添加 站点已运行时长(精确到秒,格式为「年 月 日 时 分 秒」)的功能。

创建并启用子主题(若已启用,直接跳过)

在子主题 footer.php 中添加代码

<script>
// ******** 关键配置:修改为你的博客实际建站日期 ********
const SITE_START_DATE = new Date('2020-01-01 10:30:00'); // 格式:YYYY-MM-DD HH:MM:SS

// 时间差计算函数(优化版,考虑月份天数差异)
function calculateTimeDifference(startDate, endDate) {
  let years = endDate.getFullYear() - startDate.getFullYear();
  let months = endDate.getMonth() - startDate.getMonth();
  let days = endDate.getDate() - startDate.getDate();
  let hours = endDate.getHours() - startDate.getHours();
  let minutes = endDate.getMinutes() - startDate.getMinutes();
  let seconds = endDate.getSeconds() - startDate.getSeconds();

  // 处理负数情况(时间借位)
  if (seconds < 0) {
    seconds += 60;
    minutes--;
  }
  if (minutes < 0) {
    minutes += 60;
    hours--;
  }
  if (hours < 0) {
    hours += 24;
    days--;
  }
  if (days < 0) {
    // 获取上月天数
    const lastMonth = new Date(endDate.getFullYear(), endDate.getMonth(), 0);
    days += lastMonth.getDate();
    months--;
  }
  if (months < 0) {
    months += 12;
    years--;
  }

  return { years, months, days, hours, minutes, seconds };
}

// 更新显示函数
function updateSiteAge() {
  const now = new Date();
  const timeDiff = calculateTimeDifference(SITE_START_DATE, now);
  
  // 更新页面元素
  document.getElementById('site-age-years').textContent = timeDiff.years;
  document.getElementById('site-age-months').textContent = timeDiff.months;
  document.getElementById('site-age-days').textContent = timeDiff.days;
  document.getElementById('site-age-hours').textContent = timeDiff.hours;
  document.getElementById('site-age-minutes').textContent = timeDiff.minutes;
  document.getElementById('site-age-seconds').textContent = timeDiff.seconds;
}

// 初始化显示并每秒刷新
updateSiteAge();
setInterval(updateSiteAge, 1000); // 1秒刷新一次,性能无影响
</script>

修改子主题中class_footer.php代码

  1. 找到需要插入的位置(关键行)
$html .= '</div>';  

2. 插入站点运行时长的 PHP 拼接代码

$html .= '</div>'; 后面,新增一行代码(直接复制粘贴即可,无需修改):

// 拼接站点运行时长的HTML容器(给JS提供DOM元素,样式已优化间距)
$html .= '<div id="site-age-container" style="text-align: center; margin: 5px 0; color: #666; font-size: 14px;">已运行 <span id="site-age-years">0</span> 年 <span id="site-age-months">0</span> 月 <span id="site-age-days">0</span> 天 <span id="site-age-hours">0</span> 小时 <span id="site-age-minutes">0</span> 分 <span id="site-age-seconds">0</span> 秒</div>';

3. 修改后的完整函数代码(标注新增部分)

下面是修改后的完整函数,新增部分已标注:

public function site_footer_info (){
    $text ='';
    $html = '<div class="site_info"><div class="container text-center">';

    $html .= $this->site_footer_back_top();

    $html .= '<div class="text">';

    if( get_theme_mod('copyright_text') != '' )
    {
            $text .= esc_html(  get_theme_mod('copyright_text') );
    }else
    {
            /* translators: 1: Current Year, 2: Blog Name  */
            $text .= sprintf( esc_html__( 'Copyright &copy; %1$s %2$s. All Right Reserved.', 'personal-cv-resume' ), date_i18n( _x( 'Y', 'copyright date format', 'personal-cv-resume' ) ), esc_html( get_bloginfo( 'name' ) ) );

    }

    $html  .= apply_filters( 'emart_footer_copywrite_filter', $text );

    /* translators: 1: developer website, 2: WordPress url  */
    $html  .= '<span class="dev_info">'.sprintf( esc_html__( 'Theme : %1$s By %2$s', 'personal-cv-resume' ), '<a href="'. esc_url( 'https://wordpress.org/themes/personal-cv-resume/' ) .'" target="_blank" rel="nofollow">'.esc_html_x( 'Personal CV Resume', 'theme name', 'personal-cv-resume' ).'</a>',  '<a href="'.esc_url( __( 'https://athemeart.com/', 'personal-cv-resume' ) ).'" target="_blank" rel="nofollow">'.esc_html_x( 'aThemeArt', 'credit to developer', 'personal-cv-resume' ).'</a>' ).'</span>';

    $html .= '</div>';

    // ========== 新增:拼接站点运行时长的HTML容器(关键行) ==========
    $html .= '<div id="site-age-container" style="text-align: center; margin: 5px 0; color: #666; font-size: 14px;">已运行 <span id="site-age-years">0</span> 年 <span id="site-age-months">0</span> 月 <span id="site-age-days">0</span> 天 <span id="site-age-hours">0</span> 小时 <span id="site-age-minutes">0</span> 分 <span id="site-age-seconds">0</span> 秒</div>';

    $html .= '</div></div>';

    echo wp_kses( $html, $this->alowed_tags() );
}

验证效果(最后一步)

保存 class/class_footer.phpfooter.php 文件。 刷新博客前台,滚动到页脚,即可看到:

  • 版权信息和站点运行时长紧密贴合,无过大间距。
  • 站点运行时长的秒数会实时跳动更新,功能正常。

发表回复

Your email address will not be published. Required fields are marked *.

*
*