创建自定义设置页面包括以下组合:创建管理菜单,使用设置API和选项API.
下面的示例可用于根据评论快速参考这些主题。
完整示例
添加顶级菜单的完整示例WPOrg公司
,注册名为的自定义选项wporg_选项
并使用设置API和选项API执行CRUD(创建、读取、更新、删除)逻辑(包括显示错误/更新消息)。
/***@internal从不在回调中定义函数。*这些功能可以多次运行;这将导致一个致命的错误。*//***自定义选项和设置*/函数wporg_settings_init(){//为“wporg”页面注册一个新设置。register_setting('wporg','wpoorg_options');//在“wporg”页面中注册一个新的部分。添加设置节(“wporg_section_developers”,__(“The Matrix have you.”,“wporg”),“w.org_section_developers_callback”,“wporg”);//在“wporg”页面内的“wpoorg_section_developers”部分注册一个新字段。添加设置字段(“wporg_field_pill”,//自WP 4.6起,此值仅在内部使用。//使用$args的label_for填充回调中的id。__(“药丸”、“wporg”),“wporg_field_pill_cb”,“wporg”,“wporg_section_developers”,阵列(“label_for'=>”wporg_field_pill“,“class”=>“wporg_row”,“wporg_custom_data”=>“自定义”,));}/***将wporg_settings_init注册到admin_init操作挂钩。*/add_action('admin_init','wporg_settings_init');/***自定义选项和设置:*-回调函数*//***开发人员部分回调函数。**@param array$args设置数组,定义标题、id和回调。*/函数wporg_section_developers_callback($args){?><p id=“<?php echo esc_attr($args['id']);?>”><?php esc_html_e(“跟随白兔”,“wporg”);?></p>(第页)<?php(电话)}/***药丸场callbakc功能。**WordPress与以下键进行了神奇的交互:label_for,class。*-“label_for”键值用于<label>的“for”属性。*-“class”键值用于包含字段的<tr>的“class”属性。*注意:您可以添加自定义键值对,以便在回调中使用。**@param数组$args*/函数wporg_field_pil_cb($args){//获取我们使用register_setting()注册的设置的值$options=获取选项('wporg_options');?><选择id=“<?php echo esc_attr($args['label_for']);?>”data-custom=“<?php echo esc_attr($args['wporg_custom_data']);?>”name=“wporg_options[<?php echo esc_attr($args['label_for']);?>]”><选项值=“红色”<?php echo已设置($options[$args['label_for']])?(选中($options[$args['label_for']],'red',false)):('');?>><?php esc_html_e(“红色药丸”,“wporg”);?></选项><选项值=“蓝色”<?php echo已设置($options[$args['label_for']])?(已选中($options[$args['label_for']],'blue',false)):('');?>><?php esc_html_e(“蓝色药丸”,“wporg”);?></选项></选择><p class=“description”><?php esc_html_e(“你吃了蓝色药丸,故事就结束了。你在床上醒来,你相信任何你想相信的东西。”,“wporg”);?></p><p class=“description”><?php esc_html_e(“你吃了红色药丸,就呆在仙境里,我会告诉你兔子洞有多深。”,“wporg”);?></p><?php(电话)}/***添加顶级菜单页。*/函数wporg_options_page(){添加菜单页面(“WPOrg”,“WPOrg选项”,'管理选项',“wporg”,“wporg_options_page_html”);}/***将wporg_options_page注册到admin_menu操作挂钩。*/add_action('admin_menu','wporg_options_page');/***顶级菜单回调功能*/函数wporg_options_page_html(){//检查用户功能if(!current_user_can('manage_options')){回报;}//添加错误/更新消息//检查用户是否提交了设置//WordPress将在url中添加“更新设置”$_GET参数if(isset($_GET['settings-updated'])){//使用“updated”类添加设置保存的消息add_settings_error('wporg_messages','wporg_message',__('settings Saved','wporg'),'updated');}//显示错误/更新消息settings_errors(“wporg_messages”);?><div class=“wrap”><h1><?php echo esc_html(get_admin_page_title());?></h1><form action=“options.php”method=“post”><?php(电话)//已注册设置“wporg”的输出安全字段settings_fields(“wporg”);//输出设置部分及其字段//(部分注册为“wporg”,每个字段注册为特定部分)do_settings_sections(“wporg”);//输出保存设置按钮submit_button('保存设置');?></form></div><?php(电话)}