一直在使用Settings API时发现,仅当通过add_options_page()将设置页面挂接到WordPress菜单时,才会显示消息(无论是成功还是错误)。其他任何方法均不起作用,例如add_dashboard_page()。想知道这是否是真的吗?我尝试使用的示例代码的答案是包含“ RegisteredSettingsTest”类的答案,该类在还想更新Settings API之外的选项时在何处钩挂Settings API的register_settings?
一直在使用Settings API时发现,仅当通过add_options_page()将设置页面挂接到WordPress菜单时,才会显示消息(无论是成功还是错误)。其他任何方法均不起作用,例如add_dashboard_page()。想知道这是否是真的吗?我尝试使用的示例代码的答案是包含“ RegisteredSettingsTest”类的答案,该类在还想更新Settings API之外的选项时在何处钩挂Settings API的register_settings?
Answers:
感谢Chip(出色的Settings API教程)和t31os(用于快速测试的出色代码段)的两个建议。
我进行了进一步的挖掘,发现如果我进入任何菜单,但仅在调用函数settings_errors()时,才可以显示默认消息。
例如,如下修改t31os代码:
<div class="wrap">
<h2>Test</h2>
<?php settings_errors(); ?>
<form action="options.php" method="post">
还可以通过调用add_settings_error()函数来添加自定义错误消息,方法是通过将$type
参数指定为'error'或'updated' 来显示成功或失败消息。
我将Settings API与我的Theme集成在一起使用add_theme_page()
,并且在显示管理员通知时没有任何问题。
我怀疑这是您的代码而不是Settings API限制所致。
您可以发布您的实际代码,以便我们帮助您解决任何与代码相关的问题吗?
编辑
您可能需要显式输出管理员通知。例如,这是我在设置页面标记功能中使用的功能:
<?php if ( isset( $_GET['settings-updated'] ) ) {
echo "<div class='updated'><p>Theme settings updated successfully.</p></div>";
} ?>
我假设您也可以为错误通知做类似的事情。
add_options_page()
并保存设置,则会显示“已保存设置”消息。但是,如果我更改了代码以使用add_theme_page()
或add_dashboard_page()
,则不会出现默认的“已保存设置”消息。
settings_errors();
技巧,感谢您发布跟进Jesse!