当你想要创建一个设置页面时,你会偶然发现两个语义相似的WP函数,它们叫做:
- register_setting()
- add_settings_field()我读了这些文件,对它们感到困惑。如果我想在WP Admin中创建设置页面,是否需要这两种设置>;设置区域?
The first one says:
"E;注册设置及其数据"E;
但是注册什么?它使用$option_group 它不会出现在数据库中的任何位置,但似乎用于在同一个引擎盖下为一组设置创建nonce,正如我从this WPSE question.
认为它足够使用似乎是合乎逻辑的add_settings_field():
"E;将新字段添加到设置页面的某个部分"E;
但再说一遍,以前使用register_setting()?
Did I try something?
是的,我使用在线引用遵循了多个示例,但仍然对每个函数的实际功能感到困惑。
1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成
认为它足够使用似乎是合乎逻辑的add_settings_field()
是的,看起来是这样,但这还不够:
register_setting() 白名单特定设置的数据库选项,该选项允许在wp-admin/options.php 页请注意,通过;选项“;,我指的是register_setting().
add_settings_field() 另一方面,则是;保留空间“;在特定的settings section 因此,在保留的空间中,您需要输出设置字段的HTML(可以使用一个或多个数据库选项)。所以add_settings_field() 和register_setting() 不可互换(add_settings_field() 不会自动将选项列入白名单,并且register_setting() 不会自动保留上述空间),您需要将设置字段或表单中使用的选项列入白名单。
例如,如果有<input name="foo_option" ...>, 然后foo_option 需要列入白名单,如下所示:register_setting( \'my_settings_group\', \'foo_option\' ).
事实上add_settings_field() documentation 强调:
You MUST register any options 此函数用于register_setting() 或者它们不会自动保存和更新。
你也可以在Settings API handbook..
例如,您希望bar_option 在站点设置API中提供:
register_setting( \'some_settings_group\', \'bar_option\', array(
\'show_in_rest\' => true,
\'type\' => \'number\',
\'default\' => 123,
) );