我还需要上钩吗admin_init 并称之为register_setting() 如果我做了add_option() 之前
对你需要。
您可以添加add_option 设置默认值。另一个呼叫add_option 什么也做不了。然而register_setting() 不仅仅是add_option().
每个设置都有上下文页面,例如(常规、阅读、书写、媒体、您定义的某些页面,…)并且可以有回调函数,您可以在其中对数据执行操作。
有关更多信息,请查看Settings API.
有人可能会认为设置API一团糟。顺便说一句,这是你可以从WordPress核心阅读的内容。
File: wp-admin/includes/template.php
2: /**
3: * Template WordPress Administration API.
4: *
5: * A Big Mess. Also some neat functions that are nicely written.
(中也有部分设置API
wp-includes/option.php )
另一方面example 从codex可以帮助您快速启动。
但是,在使用设置时,您需要深入挖掘并掩盖可能的错误—因此,您需要了解它是如何完美工作的。
对于那些开始编写第一个插件的WordPress程序员来说,这可能很困难。这可能需要几天的时间。
在WordPress 4.7中,我们对设置API进行了更新,但这并不意味着设置API将来可能会升级。
如果我记得的话,在创建节时很难选择不同的HTML元素,例如:
File: wp-admin/includes/template.php
1286: function do_settings_sections( $page ) {
1287: global $wp_settings_sections, $wp_settings_fields;
1288:
1289: if ( ! isset( $wp_settings_sections[$page] ) )
1290: return;
1291:
1292: foreach ( (array) $wp_settings_sections[$page] as $section ) {
1293: if ( $section[\'title\'] )
1294: echo "<h2>{$section[\'title\']}</h2>\\n";
1295:
1296: if ( $section[\'callback\'] )
1297: call_user_func( $section[\'callback\'], $section );
1298:
1299: if ( ! isset( $wp_settings_fields ) || !isset( $wp_settings_fields[$page] ) || !isset( $wp_settings_fields[$page][$section[\'id\']] ) )
1300: continue;
1301: echo \'<table class="form-table">\';
1302: do_settings_fields( $page, $section[\'id\'] );
1303: echo \'</table>\';
1304: }
1305: }
正如我看到的,设置API存在问题;此API很旧。
可能的改进是什么。伪语言。您只需通过设置API这样定义表单
---
name: cool-settings.php
style: default
---
textfield: First Name|first-name
textfield: Last Name|last-name
textarea: About Yourself|about
image: Your Image|image|(.gif|.jpg|.jpeg|.png)
我从Jekyll那里看到了这个语法。