objectivco/wordpress-simple-settings

WordPress插件或主题设置的极简框架。

0.7.3 2019-11-11 19:32 UTC

This package is auto-updated.

Last update: 2024-09-12 05:59:02 UTC


README

WordPress插件或主题设置的极简框架。

这是什么

这是一个用于管理WordPress插件或主题选项的超级简单的框架。无需复杂的字段区域注册或其他开销。只需添加一些设置,更新它们,获取它们。就这样。

它可以神奇地处理nonce、字段名称等!

它是如何工作的

WordPress Simple Settings是一个抽象类,您可以在自己的插件类、主题类或任何需要的地方扩展。

它接受一个由您设置的名称前缀,并构建一个存储在数据库中单个选项中的设置对象。

这部分应该是一个提示,告诉您使用此API应该存储什么类型的数据:小量数据!

就像内置的Options API(此框架使用的一样),您只想用它存储小块数据。不要尝试在这里存储您的客户数据库!

安装

最好的方法是使用composer: composer require objectivco/wordpress-simple-settings

您也可以将存储库克隆到您的lib或inc目录中,并要求wordpress-simple-settings.php。但composer更好。

您可以在我们的示例插件中快速了解如何实现:examples/awesome-plugin

关键是,您将实例化您的插件类作为WP_SimpleSettings的扩展。然后,您将设置一个名为$prefix的类变量作为前缀。

如果您不设置$prefix,框架将尝试使用您的子类名称。但这仅在PHP 5.3+中有效。所以,实际上,还是设置一个前缀吧?

变更日志

0.7.2

  • 如果没有旧值,请传递NULL作为旧值。

0.7.1

  • WordPress编码标准
  • 在save_settings()中不要为每个设置保存到数据库。推迟到最后。
  • 添加操作{$this->prefix}_update_setting{$setting},在设置更新期间接收旧值和新值。
  • 忽略.idea文件夹

0.3.0

  • 添加$delimeter变量,允许从分号(默认)切换到其他分隔符。

0.2.2

  • 添加delete_setting。

0.2.1

  • 修复{$this->prefix}_settings_saved操作的位置,以防止不适当触发。

0.2

  • 改进数组的存储和处理。
  • 添加do_action("{$this->prefix}_settings_saved")钩子,以便在插件设置保存后添加您自己的操作。

0.1

  • 初始版本。

用法

以下是您在插件中可以使用的的基本函数。

add_setting($option_name, $value)

这本质上是对update_setting的包装,在所询问的选项已经设置的情况下,不会做出任何更改。

您最常在激活钩子中使用此功能。

delete_setting($option_name)

删除设置。

get_setting($option_name, $type)

检索特定选项。默认返回字符串。如果您指定array作为$type,它将把值视为分隔字符串(默认为分号)并返回一个数组。

update_setting($option_name, $new_value)

更新特定选项。

get_field_name($option_name, $type)

获取HTML字段名称。如果您将$type设置为数组,字段值将被视为分隔字符串(默认为分号)并存储为数组。

the_nonce()

在您的管理员表单中的某个位置调用$YourPluginInstance->the_nonce()以生成用于验证/保存设置的nonce。

save_settings()

除非您想覆盖默认功能,否则没有必要调用此函数。此函数将在admin_init时自动调用并保存设置,如果设置了正确的nonce和$_REQUEST

设置对象

在构建此框架时,我的目标之一是拥有一个易于访问的设置对象,可以直接使用,而无需使用获取器/设置器。这可以通过简单地使用$this->settings[$option_name]来实现。

显然,这应该在只读应用程序中使用。在此处设置值不会在数据库中更新它们。

反馈

我绝不声称拥有关于管理WordPress主题或插件选项的完美、最终答案。

这种极简主义方法的目的是,您可以简单地构建您的插件,而不是扭曲它以适应更严格的应用程序编程接口。

如果您有任何关于如何改进这里的内容的想法,请告诉我!