カスタム管理ページがadd_options_page()にフックされていない場合、設定APIの更新されたメッセージは表示されません


9

設定APIをいじってみて、メッセージ(成功またはエラー)が表示されるのは、設定ページがadd_options_page()を介してWordPressメニューにフックされている場合のみであることがわかりました。それ以外は機能しません(例:add_dashboard_page())。これが本当かどうか知りたいですか?私が試したサンプルコードは、設定APIの外部のオプションも更新したいときに、設定APIのregister_settingsをフックする場所にある "RegisteredSettingsTest"クラスを含む回答です。

回答:


21

両方の提案に感謝します。チップ(優れた設定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();トリックを使用して、フォローアップのジェシーを投稿してくれてありがとう!
CommentLuv

10

私は自分のテーマと設定APIの統合を使用しadd_theme_page()、管理通知を表示しても問題はありません。

設定APIの制限ではなく、コードの問題だと思います。

実際のコードを投稿して、コード関連の問題を解決できるようにすることはできますか?

編集

管理者通知を明示的に出力する必要がある場合があります。たとえば、これは私の設定ページのマークアップ関数で使用するものです。

<?php if ( isset( $_GET['settings-updated'] ) ) {
    echo "<div class='updated'><p>Theme settings updated successfully.</p></div>";
} ?>

エラー通知に対しても同様のことができると思います。


更新された回答を参照してください。
チップベネット、

私が使用したコードはpastebinにあります。よくわからなければ申し訳ありません。を介してメニューにフックしadd_options_page()て設定を保存すると、「設定が保存されました」というメッセージが表示されます。ただし、add_theme_page()またはを使用するようにコードを変更した場合add_dashboard_page()、デフォルトの「設定が保存されました」というメッセージは表示されません。
Jesse van Couten、2011

右...上の例のようにコードを追加しましたか?設定ページのマークアップ関数に明示的に追加する必要があります。
チップベネット

テストコードを使用して構築したことを光栄に思います。Chipは、通知を自分で明示的に追加する必要があります。設定ページJesseで頑張ってください.. :)
t31os
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.