WordPress高级指南:创建和管理自定义数据库表

首先,寻找创建自定义数据库表必需资源的秘密路径。通过一步一个脚印的指导,我相信,你将学会如何一步步构建这些表。最后,我们将探讨如何与这些新创建的数据库表进行有效的交互,确保你能够顺利地管理和使用这些数据。整个过程都会完整走完,无论你是初学者还是有一定基础的开发者,都能从中获得宝贵的知识和技能。

为什么要创建自定义数据库表?

WordPress 的默认数据库架构几乎可以满足所有类型的内容需求。通过注册自定义帖子类型和利用帖子元数据,我们可以轻松处理大部分数据需求。

WordPress高级指南:创建和管理自定义数据库表

然而,有时候我们遇到一些特殊情况,标准的架构就显得不够用了。

拿电子商务网站来说,对于产品来讲,自定义帖子类型就很合适,因为产品页面需要的标题、图片和详细描述等信息,和普通帖子差不多。如果需要额外的信息,也可以通过帖子的元数据来添加。

但订单的情况就不一样了,订单包含的信息和普通帖子大相径庭,所以把订单信息放在一个自定义的数据库表中会更合适。

简而言之,当你需要处理一些不适合放在默认数据库架构中的数据时,创建一个自己的自定义数据库表是个不错的选择。

哪里可以找到信息

虽然 WordPress 开发人员文档不包含有关自定义数据库表的任何内容,但有一个名为 Codex 的旧版本开发人员文档包含了这些内容。你可以在Codex 的使用插件创建表页面中找到有关自定义数据库表的所有信息。

创建自定义数据库表

WordPress高级指南:创建和管理自定义数据库表

你会注意到的第一件事是,这通常是在插件中完成的。

此外,可以并建议在激活插件时使用函数创建自定义register_activation_hook 

这允许此功能运行一次,而不是每次加载插件时运行。

创建表

要创建插件激活的自定义表,你需要使用一些东西。

首先,创建一个函数来管理表的创建:

function wp_learn_create_database_table() {
}

然后,你需要使用$wpdb全局WordPress 数据库对象,因为它包含与数据库交互所需的所有方法。

这将允许你使用 WordPress 数据库前缀设置新的表名称。

function wp_learn_create_database_table() {
    global $wpdb;

    $table_name = $wpdb->prefix . 'custom_table';
}

它还允许你访问该get_charset_collate方法,该方法将返回数据库的正确字符集和排序规则。

    $charset_collate = $wpdb->get_charset_collate();

要创建表,你需要了解 SQL 以在数据库上执行 SQL 语句。这是通过dbDelta 函数完成的。dbDelta如果需要更新或更改默认 WordPress 表,则该功能通常在 WordPress 更新期间使用。它检查当前的表结构,将其与所需的表结构进行比较,并根据需要添加或修改表。

WordPress高级指南:创建和管理自定义数据库表

为了使用dbDelta,你需要以特定的方式编写 SQL 语句。

您可以在Codex页面的创建或更新表格部分了解有关这些要求的更多信息。

创建 SQL 语句后,需要将其传递给函数dbDelta。这是通过包含wp-admin/includes/upgrade.php包含函数声明的文件来完成的。

function wp_learn_create_database_table() {
    global $wpdb;

    $table_name = $wpdb->prefix . 'custom_table';

    $charset_collate = $wpdb->get_charset_collate();

    $sql = "CREATE TABLE $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
        name tinytext NOT NULL,
        text text NOT NULL,
        url varchar(55) DEFAULT '' NOT NULL,
        PRIMARY KEY  (id)
    ) $charset_collate;";

    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    dbDelta( $sql );
}

在此示例中,正在创建一个名为 的新表custom_table。它有 5 个字段: an id、 a time、 a name、 atext和 a url。是id自动递增整数、是time日期时间字段、是nametinytext 字段、是text文本字段、url是varchar 字段。这id是主键。

将此函数挂接到你的插件激活挂钩中将确保在激活插件时创建该表。

register_activation_hook( __FILE__, 'wp_learn_create_database_table' );

插入数据

还可以使用插件激活挂钩在插件激活时将数据插入表中。

为此,你可以使用对象insert的方法$wpdb,传递要插入的字段名称和值的数组。

下面是一个示例。

register_activation_hook( __FILE__, 'wp_learn_insert_record_into_table' );
function wp_learn_insert_record_into_table(){
    global $wpdb;

    $table_name = $wpdb->prefix . 'custom_table';

    $wpdb->insert(
        $table_name,
        array(
            'time' => current_time( 'mysql' ),
            'name' => 'John Doe',
            'text' => 'Hello World!',
            'url'  => 'https://wordpress.org'
        )
    );
}

更新数据

要更新自定义表中的数据,请使用update该对象的方法$wpdb,传递要更新的字段名称和值的数组,以及用于查找要更新的记录的字段名称和值的数组。

function wp_learn_update_record_in_table() {
    global $wpdb;

    $table_name = $wpdb->prefix . 'custom_table';

    $wpdb->update(
        $table_name,
        array(
            'time' => current_time( 'mysql' ),
            'name' => 'Jane Doe',
            'text' => 'Hello Planet!',
            'url'  => 'https://wordpress.org'
        ),
        array( 'id' => 1 )
    );
}

在此示例中,id 为 1 的记录将更新为新值。

选择数据

使用对象get_results的方法从自定义表中选择数据$wpdbget_results将接受有效的 SELECT SQL 语句。

function wp_learn_select_records_from_table() {
    global $wpdb;

    $table_name = $wpdb->prefix . 'custom_table';

    $results = $wpdb->get_results( "SELECT * FROM $table_name" );

    foreach ( $results as $result ) {
        echo $result->name . ' ' . $result->text . '<br>';
    }
}

默认情况下,get_results 将返回一个对象数组,你可以循环遍历该数组并将行字段作为属性访问。

打扫干净

也可以删除您的自定义表格。为此,你可以使用query该对象的方法$wpdb,传递一条 SQL 语句来删除该表。

function wp_learn_delete_table() {
    global $wpdb;

    $table_name = $wpdb->prefix . 'custom_table';

    $wpdb->query( "DROP TABLE IF EXISTS $table_name" );
}

query方法将运行任何有效的 SQL 查询,但最好仅将其用于不插入或更新数据的查询,因为此函数不执行任何查询清理。

根据你的要求或插件用户的要求,你可以通过两种方式删除表。

如果你的插件的用户在停用插件后不需要此表中的数据,你可以在插件停用挂钩上触发此操作。

register_deactivation_hook( __FILE__, 'wp_learn_delete_table' );

但是,如果该表中的数据很重要,并且你的用户可能希望保留它,即使插件已停用,你也可以使用插件可用的两种卸载方法之一删除该表。

例如,如果你选择使用register_uninstall_hook.

register_uninstall_hook( __FILE__, 'wp_learn_delete_table');

或者,你可以将表保持原样,让用户决定如何处理它。

通常建议在卸载插件时与你的用户确认是否要保留该表,然后使用其中一种卸载方法。

结论

这篇教程只是带你快速了解了自定义表的基础知识。在未来的教程里,我们将深入探讨如何在真实项目中应用这些技巧。


联系我们
文章看不懂?联系我们为您免费解答!免费助力个人,小企站点!
电话:020-2206-9892
QQ咨询:1025174874
邮件:info@361sale.com
工作时间:周一至周五,9:30-18:30,节假日休息
发布者:光子波动,转转请注明出处:https://www.361sale.com/6584/

(0)
上一篇 2024年 3月 28日 下午2:39
下一篇 2024年 3月 28日 下午3:40

相关推荐

  • 解决WordPress安装后出现的500错误的方法

    WordPress是一个常用的工具,让人们能够方便地搭建自己的网站或博客。但有时候,在安装WordPress后,你可能会遇到一个头疼的问题——500内部服务器错误。这个错误意味着服务器在处理你的请求时出了一点问题,不能正确响应。那怎么办呢?别担心,这个错误有很多可能的原因,下面我们会给你一些常见的解决办法,帮你找到问题的根源并解决它,让你的WordPress…

    2024年 4月 16日 WordPress自学建站
    007
  • 宝塔面板 WordPress博客屏蔽大陆IP

    本指南详细介绍如何使用Nginx和宝塔面板屏蔽中国大陆IP,确保跨境电商网站安全并符合地区性网站访问政策。学习如何设置IP黑名单,自定义HTTP响应状态码(如403 Forbidden),以防止不希望的地区访问您的网站。 1,首先先在Nginx里添加屏蔽大陆IP的代码 登陆宝塔面板,找到软件商店,选择Nginx后面的设置,点开 打开设置,选择左侧 配置修改,…

    6天前 WordPress自学建站
    0041
  • 10个Linux基础命令,让您更高效地使用操作系统

    Linux是一种流行的操作系统,它具有许多强大的功能和工具。作为一名Linux用户,掌握基础命令是非常重要的。本文将介绍一些常用的Linux命令,帮助您更加高效地使用Linux系统。 1. ls ls命令用于列出当前目录中的文件和子目录。例如,如果您想查看当前目录中的所有文件和目录,可以使用以下命令: bashCopy codels 2. cd cd命令用于…

    2023年 4月 6日
    00489
  • WordPress海报自动生成功能:一键生成图片分享带二维码

    为了帮助众多博客类型的个人网站或官网更便捷地分享内容,设计了一种简单而高效的一键生成海报功能。通过这个功能,你可以轻松生成带有二维码的图片分享海报,让你的内容更易于传播和推广。一键操作,即可生成精美海报,让你的博客或官网内容更具吸引力,吸引更多读者关注和分享。例如: 那我们要怎么做才能实现这个功能呢? 前期准备:解压以下zip文件,将获得的全部文件复制到主题…

    2024年 4月 15日 WordPress自学建站
    0035
  • WordPress网站升级指南:如何从HTTP迁移至安全的HTTPS

    打算把你的WordPress网站从HTTP升级到HTTPS吗?很多人对此感兴趣,尤其是在Google宣布从2018年7月开始,Chrome浏览器会将未安装SSL证书的网站标记为不安全之后。 这篇文章会教你如何给你的WordPress网站添加SSL证书,从而安全地完成从HTTP到HTTPS的迁移。 如果你对SSL或HTTPS还不太了解,别担心,我会从头到尾详细…

    2024年 3月 26日 WordPress自学建站
    0035

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

020-2206-9892

QQ咨询:1025174874

邮件:info@361sale.com

工作时间:周一至周五,9:30-18:30,节假日休息

客服微信