You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

制作带SQLite数据库的WordPress PHP插件:读取数据显示在页脚咨询

完善你的WordPress页脚SQLite数据读取PHP插件

我明白你作为非PHP开发者,想快速实现一个从SQLite数据库读取数据并显示在WordPress页脚的功能,咱们一步步把你的代码补全并修正几个关键问题:

原代码的几个小问题

  • SQL语句里重复选择了morning字段,应该只保留一次
  • 使用exec()方法不对,预编译语句需要用execute()来获取结果集
  • 直接写timetable.db会导致WordPress在网站根目录找数据库文件,需要用插件的绝对路径
  • 缺少错误处理,万一连接或查询失败会直接报错
  • 没有整合到WordPress的钩子系统里,页脚输出需要用wp_footer钩子

完整的可运行插件代码

把下面的代码保存为你的插件文件(比如sqlite-footer-timetable.php),放在WordPress的wp-content/plugins/目录下,然后在后台启用插件即可:

<?php
/*
Plugin Name: SQLite Footer Timetable
Description: 从SQLite数据库读取日程并显示在WordPress页脚
Version: 1.0
Author: Danial Bagheri
*/

// 注册页脚输出的钩子
add_action('wp_footer', 'display_sqlite_timetable_in_footer');

function display_sqlite_timetable_in_footer() {
    // 1. 定义数据库文件的绝对路径(确保timetable.db和这个插件文件在同一目录)
    $db_path = plugin_dir_path(__FILE__) . 'timetable.db';
    
    // 2. 连接SQLite数据库,添加错误处理
    try {
        $connection = new SQLite3($db_path);
        if (!$connection) {
            throw new Exception('无法连接到SQLite数据库');
        }
    } catch (Exception $e) {
        echo '<p style="color:red;">数据库连接错误:' . $e->getMessage() . '</p>';
        return;
    }
    
    // 3. 获取今天的日期,格式为d/m(和数据库里的date字段格式匹配)
    $todayDate = date("d/m");
    
    // 4. 修正SQL语句,去掉重复的morning字段
    $sql = <<<HEREDOC
SELECT morning, evening FROM manchester WHERE date = :date
HEREDOC;
    
    // 5. 预编译SQL并绑定参数
    $rs = $connection->prepare($sql);
    if (!$rs) {
        echo '<p style="color:red;">SQL预编译失败:' . $connection->lastErrorMsg() . '</p>';
        $connection->close();
        return;
    }
    $rs->bindValue(':date', $todayDate, SQLITE3_TEXT);
    
    // 6. 执行查询并获取结果
    $result = $rs->execute();
    if (!$result) {
        echo '<p style="color:red;">查询执行失败:' . $connection->lastErrorMsg() . '</p>';
        $connection->close();
        return;
    }
    
    // 7. 读取结果并输出到页脚
    $row = $result->fetchArray(SQLITE3_ASSOC);
    if ($row) {
        echo '<div class="footer-timetable">';
        echo '<p>今日日程:</p>';
        echo '<ul>';
        echo '<li>上午:' . esc_html($row['morning']) . '</li>'; // 用esc_html防止XSS
        echo '<li>晚上:' . esc_html($row['evening']) . '</li>';
        echo '</ul>';
        echo '</div>';
    } else {
        echo '<p>今日暂无日程</p>';
    }
    
    // 8. 关闭数据库连接
    $connection->close();
}
?>

关键细节解释

  • 路径处理:plugin_dir_path(__FILE__)会获取当前插件文件所在的目录绝对路径,确保能正确找到timetable.db
  • 错误处理:添加了try-catch和各种判断,避免网站因为数据库问题白屏
  • 安全输出:用esc_html()过滤输出内容,防止XSS攻击(WordPress开发的最佳实践)
  • WordPress钩子:通过add_action('wp_footer', ...)把输出绑定到页脚钩子,符合WordPress的开发规范

这样修改后,你的插件就能正常读取SQLite数据并显示在WordPress页脚啦!

内容的提问来源于stack exchange,提问作者Danial Bagheri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:27:40