如果自定义管理页面未连接到add_options_page(),则不会显示Settings API更新的消息


9

一直在使用Settings API时发现,仅当通过add_options_page()将设置页面挂接到WordPress菜单时,才会显示消息(无论是成功还是错误)。其他任何方法均不起作用,例如add_dashboard_page()。想知道这是否是真的吗?我尝试使用的示例代码的答案是包含“ RegisteredSettingsTest”类的答案,该类在还想更新Settings API之外的选项时何处钩挂Settings API的register_settings?

Answers:


21

感谢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_errors();技巧,感谢您发布跟进Jesse!
Luv

10

我将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>";
} ?>

我假设您也可以为错误通知做类似的事情。


查看最新答案。
Chip Bennett

我使用的代码可以在pastebin中找到。抱歉,如果我不够清楚。我观察到的是,如果我通过进入菜单add_options_page()并保存设置,则会显示“已保存设置”消息。但是,如果我更改了代码以使用add_theme_page()add_dashboard_page(),则不会出现默认的“已保存设置”消息。
Jesse van Couten 2011年

对...您是否按照上面的示例添加了代码?您必须将其显式添加到设置页面标记功能。
Chip Bennett

我很高兴您使用我的测试代码来构建,Chip是正确的,您需要自己明确添加通知。祝您好运,您的设置页面Jesse .. :)
t31os 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.