【网站建设】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代码
- 找到需要插入的位置(关键行)
$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 © %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.php 和 footer.php 文件。 刷新博客前台,滚动到页脚,即可看到:
- 版权信息和站点运行时长紧密贴合,无过大间距。
- 站点运行时长的秒数会实时跳动更新,功能正常。




