使用$ wpdb-insert在自定义数据库表中插入WordPress主题选项

时间:2013-10-02 14:38:48

标签: mysql wordpress

我已经用了很长时间了,我找不到办法让它发挥作用。

我正在使用我的主题创建一个简单的主题选项,但将所有选项放到自定义数据库表中。 我想知道$ wpdb-> insert()如何插入所有选项,如add_option()。

这是我的代码 - http://pastebin.com/5xHBs6r2 如果你看看209行*函数stheme_initialize_theme_options()*你会明白我的意思。我还创建了一个函数(* function stheme_default_options()*),它保存默认选项并使用 apply_filters()返回。

我希望有人可以帮我解决这个问题,因为我现在正在努力解决这个问题。

谢谢! 最好的问候。

2 个答案:

答案 0 :(得分:1)

考虑使用Options API。它比编写自己的查询简单得多,而且已经内置了。

http://codex.wordpress.org/Options_API

设置,重置和检索存储的选项可以通过3个或4个命令完成,因此它是一个非常漂亮的系统。例如,这个:

add_option('my_option', 'foo');

将在数据库中实例化一个选项,这将更新它:

update_option('my_option', 'foo2');

最后,这将检索它:

$s = get_option('my_option');

如果您使用选项APi,最好坚持命名约定,为您的选项提供自己的前缀。如果你使用太明显的东西,太容易交叉到其他插件等。

答案 1 :(得分:0)

这是一个经典的XY Problem

不要创建表来执行WordPress已经执行的操作。您甚至将自己置于陷阱中,因为您将无法使用WP默认工具查询数据,并且必须重新发明轮子才能实现它。

您要找的是register_activation_hookregister_deactivation_hookregister_uninstall_hook

除了卸载钩子之外,我们可以使用文件uninstall.php和我们的插件在删除插件后清理我们的东西。请参阅WordPress Answers上的this related posts


PS:在您的代码中,这完全不需要:

add_action( 'init', 'st_register_table', 1 );

您只需使用$wpdb->prefix.'your_table'来解决自定义表格。