質問: [ネットワーク設定]画面に新しいサイト全体のオプションのフィールドを追加する方法 私はプラグインに取り組んでいます、そしてそれの一部はwordpressネットワークのすべてのサイトに適用されるオプション値を設定することを含みます。値をwp_sitemetaテーブルに保存できる add_site_option と get_site_option 関数については知っていますが、wordpressバックエンドの適切な場所にフィールドを配置する方法はわかりません。それが起こったときにadd_site_option呼び出しを挿入するためにサイト全体の値の保存を傍受する方法。最初の問題(フィールドの追加)では、通常、settings api、具体的には register_setting および add_settings_field を使用して新しいオプションをホワイトリストに追加し、そのフィールドを適切なオプションページに挿入します。しかし、ネットワーク管理ページに対して機能する別の機能がある場合、またはあなたが追加の機能を使用する場合、add_settings_fieldを使用してバックエンドの新しいnetwork adminセクションのsettingsページにフィールドを追加できるかどうかについての情報は見つかりません。 htmlを手動で注入するだけです。 (フィールドをエコーアウトする関数を書き、その関数を「ネットワーク管理」の「設定」ページの最後で実行される「wpmu_options」アクションに接続することで手動で行うことができます。手動で他のすべてのもの。2番目の問題は、おそらくユーザーが[ネットワーク管理者設定]ページで[保存]をクリックしたときに実行されるアクションを見つけることですが、私はまだそれを見つけることができませんでした。任意のリードは大歓迎です。だから - 考え?新しいネットワーク管理領域を通じてプラグインのサイト全体のオプションを管理できるようにする優雅な方法はありますか?もしそうなら、それはどうですか?
回答: ネットワーク設定ページにさらにhtmlを追加できるwpmu_optionsアクションがあります。あなたがあなた自身のサブメニュー/ページを設定親メニューに加えたいならば:add_action('network_admin_menu', 'add_my_netw_settings_page'); function add_my_netw_settings_page() { add_submenu_page( 'settings.php', 'co za asy', 'co za asy', 'manage_network_options', 'my-netw-settings', 'your_form' ); } function your_form(){ $options = get_site_option('your_plugin'); ?> <form action="<?php echo admin_url('admin-post.php?action=update_my_settings'); ?>" method="post"> <?php wp_nonce_field('your_plugin_nonce'); ?> ...fields go here... </form> <?php } 保存ハンドラadd_action('admin_post_update_my_settings', 'update_my_settings'); function update_my_settings(){ check_admin_referer('your_plugin_nonce'); if(!current_user_can('manage_network_options')) wp_die('fu'); // process your fields from $_post here and update_site_option wp_redirect(admin_url('network/settings.php?page=my-netw-settings')); exit; } 上記のアクションを使用することを選択した場合は保存ハンドラを保持し、フォームをそのアクションにフックします。