新增 inc/theme-stat.php(约 1814 行),把百度统计的数据直接显示在 主题设置页,不用再跳去百度后台看。 主要设计决策: - 凭据(API Key / Secret / refresh_token)存 wp-content/uploads/ 下 独立文件(0600),不写 options 表、不在表单回显 —— 换主题/升级不丢 - 13 个指标全部实现,用户可在「面板显示哪些指标」里各别开关 (每次 API 调用都占配额,只看几个数字的可以关掉其余) - 面板走 AJAX 懒加载「先出壳、后取数」:同步渲染 8 个请求 ×5 秒超时 会让设置页最坏卡 40 秒 - 缓存成功 1800 秒 / 失败 300 秒:接口挂了不至于每次刷新都等超时 - "--"(百度接口的"无数据")渲染成破折号,不转成 0 —— 否则 "暂无数据"会被显示成"0 次访问" - footer.php 的统计代码外面加埋点开关,关掉不停用代码本身 改动: - inc/theme-stat.php 新建 - inc/theme-options.php 新增 8 个控件 - footer.php 统计代码套埋点开关 - functions.php require 新模块 - style.css 版本号 4.0.0 → 4.1.0 验证: - php -l 全量 98 文件 0 失败 - 正向判据 145/0,反证 19 组全抓到 - 真实接口连通性 10/0(OAuth 401 与 error_code 110 两种错误格式实测) - 打包自检 82/0,其反证 15 组全抓到
96 lines
5.1 KiB
PHP
96 lines
5.1 KiB
PHP
<?php
|
||
/**
|
||
* 主题页脚
|
||
* @author Yongquan Yang <yangyq.net>
|
||
* @license MIT License
|
||
* @version 2020.04.12
|
||
*/
|
||
?>
|
||
<div class="k-footer">
|
||
<div class="f-toolbox">
|
||
<div class="gotop">
|
||
<div class="gotop-btn">
|
||
<span class="kicon i-up"></span>
|
||
</div>
|
||
</div>
|
||
<div class="search">
|
||
<span class="kicon i-find"></span>
|
||
<form class="search-form" role="search" method="get" action="<?php echo home_url('/'); ?>">
|
||
<input type="text" name="s" id="search" placeholder="<?php _e('搜点什么呢?', 'kratos'); ?>" style="display:none"/>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-12 text-center">
|
||
<p class="social">
|
||
<?php
|
||
$social = array('s_sina', 's_bilibili', 's_coding', 's_gitee', 's_twitter', 's_telegram', 's_linkedin', 's_youtube', 's_github', 's_stackflow', 's_email');
|
||
foreach ($social as $social) {
|
||
if (kratos_option($social)) {
|
||
echo '<a target="_blank" rel="nofollow" href="' . kratos_option($social . '_url') . '"><i class="kicon i-' . str_replace("s_", "", $social) . '"></i></a>';
|
||
}
|
||
}
|
||
?>
|
||
</p>
|
||
<?php
|
||
$sitename = get_bloginfo('name');
|
||
/* 版权行:优先用后台「页脚配置 - 版权信息」里填的内容。
|
||
早先这里是无条件硬编码,后台那个输入框填了也不生效 ——
|
||
用户在后台改了、前台毫无变化,是很容易被当成 bug 的
|
||
那种"功能失灵"。空值才回退到自动拼的默认文案。 */
|
||
$copy = kratos_option('s_copyright', '');
|
||
if (!is_string($copy) || trim($copy) === '') {
|
||
$copy = 'COPYRIGHT © ' . date('Y') . ' ' . $sitename . ' 版权所有';
|
||
}
|
||
/* 输出必须转义。这个值是后台管理员填的,但后台账号被盗
|
||
或者多人站点里有人权限被降,都会让这里变成注入点;
|
||
而且版权行里出现 <b> 之类也只会显示成怪异的样子。
|
||
换行保留:用户可能分行写。 */
|
||
echo '<p>' . nl2br(esc_html($copy)) . '</p>';
|
||
echo '<p>THEME <a href="https://git.yangyq.net/laoyang/wordpress-kratos-yang" target="_blank" rel="nofollow">KRATOS YANG</a> Modified BY <a href="https://yangyq.net" target="_blank" rel="nofollow">老杨</a></p>';
|
||
if (kratos_option('s_icp')) {
|
||
echo '<p><a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">' . kratos_option('s_icp') . '</a></p>';
|
||
}
|
||
if (kratos_option('s_gov')) {
|
||
echo '<p><a href="' . kratos_option('s_gov_link', '#') . '" target="_blank" rel="nofollow" ><i class="police-ico"></i>' . kratos_option('s_gov') . '</a></p>';
|
||
}
|
||
/* 统计脚本:内容由用户在「收录与统计 → 统计代码」里填,
|
||
开关由「埋点开关」控制(见 inc/theme-stat.php)。
|
||
开关与代码分离,是为了让"临时停掉统计"不必删代码 ——
|
||
删了之后想恢复就得重新去百度后台找那串 hash。 */
|
||
if (yang_stat_tracking_enabled() && kratos_option('seo_statistical')) {
|
||
echo '<p>' . kratos_option('seo_statistical') . '</p>';
|
||
}
|
||
/* 国旗:勾了「是否添加国旗」才显示。以前 src 直接取选项,
|
||
用户没上传地址就得到 <img src="">,页面上是一个破图图标。
|
||
逻辑抽到 yang_flag_block() 里,测试能直接测同一个函数,
|
||
不必"照着抄一遍"(抄件永远是对的,模板改坏了也发现不了)。 */
|
||
echo yang_flag_block();
|
||
?>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<?php wp_footer(); ?>
|
||
<?php
|
||
/**
|
||
* 这里原来有一段「Prism 代码高亮兜底」。
|
||
*
|
||
* 3.2.42 起已删除。原因:
|
||
* 代码高亮改由主题自研接管(inc/theme-highlight.php + highlight.js 自托管),
|
||
* 服务端就把每个 <pre> 规范成了卡片结构,前端 hljs 一次性上色完成。
|
||
* Prism 那段留着有两个害处:
|
||
* ① 它会对同一批 `<pre><code>` 再扫一遍,把 hljs 已经写好的
|
||
* `<span class="hljs-*">` 当文本重新包一层,产出嵌套 span,
|
||
* 首尾行高算错、行号对不齐;
|
||
* ② Prism 的 autoloader 会去拉 wp-editormd 的语言包,
|
||
* 而 wp-editormd 已被关停/可能被删,地址 404 时控制台报错。
|
||
*
|
||
* ⚠️ 如果将来要恢复 Prism,必须同时关掉 yang_hl_enabled(),
|
||
* 两套高亮器不能同时在一页里跑。
|
||
*/
|
||
?>
|
||
</body>
|
||
</html>
|