返回

在 WP_List_Table 列中显示数据库文本:使用 textarea 的解决之道

php

在 WP_List_Table 列中显示数据库文本:使用 textarea 的解决方案

概述

对于使用 WordPress WP_List_Table 类创建表格的情况,有时我们需要在特定列中显示来自数据库的文本数据。使用 textarea 可以方便用户编辑和查看大量文本。本文将引导你完成在 WP_List_Table 列中使用 textarea 并从数据库获取数据的过程。

步骤 1:检索数据库中的数据

首先,你需要从数据库中检索 notes 字段的内容。这可以通过使用 $wpdb 对象执行 SQL 查询来完成。例如,以下代码从 orders 表中检索具有特定 ID 的订单的注释:

$notes = $wpdb->get_var("SELECT notes FROM orders WHERE id = '$order->id'");

步骤 2:转义数据

从数据库检索到的数据可能包含特殊字符,这些字符在 HTML 中具有特殊含义。为了防止这些字符导致安全问题或显示问题,需要对它们进行转义。你可以使用 esc_textarea() 函数对文本数据进行转义:

$notes = esc_textarea($notes);

步骤 3:在 textarea 中显示数据

现在,你可以将转义后的 notes 数据显示在 textarea 中。在 column_notes() 函数中,你需要设置 textarea 的 value 属性为 notes 变量:

function column_notes($item) {
    return sprintf(
        '<span><textarea id="%s" name="%s" rows="3" cols="20">%s</textarea></span>',
        $item['ID'],
        $item['ID'],
        $item['notes']
    );
}

常见问题解答

问:为什么 textarea 中没有显示文本数据?
答:确保你已经正确地检索了 notes 字段的内容,并且已经对其进行了转义。

问:如何使 textarea 更宽或更高?
答:可以通过在 column_notes() 函数中修改 rowscols 属性来调整 textarea 的大小。

问:我可以使用 CKEditor 或其他富文本编辑器吗?
答:是的,你可以使用插件或自定义代码来集成富文本编辑器。

问:我可以在 textarea 中保存更改吗?
答:是的,你可以通过在 save_page() 函数中处理表单提交来实现此目的。

问:为什么 textarea 中的文本被截断?
答:确保数据库中的 notes 字段具有足够的空间来存储文本,并且 textarea 的 rows 属性足够高以显示所有文本。

结论

通过遵循本文中概述的步骤,你将能够在 WP_List_Table 列中使用 textarea 并显示来自数据库的文本数据。这提供了编辑和查看大量文本的便利方法,使你的表格更加全面和有用。