web-dev-qa-db-ja.com

マルチサイトプラグインの「グローバル」設定ページ

私はマルチサイトインスタンスにインストールされるプラグインに取り組んでいます。

「ネットワーク管理者」レベルでのみ表示される単一の設定ページを作成するにはどうすればよいですか。私がこれまで見たほとんどのガイドは標準のブログレベルのプラグインに関するものです。情報へのリンクがあれば便利ですが、そうでなければ、サイト全体のタグを調べて、それがどのように行われているのかを確認します。

[更新]

Sitewide_tagsはadd_site_optionget_site_optionおよびupdate_site_optionを使用し、これらの関数はwp_sitemetaを使用します。しかし、私が見ることができるものから、register_setting、add_settingなどのサポートはないので、あなたは手動であなたのオプションを取得して設定しなければなりません。

24
anu

参考として

ネットワーク設定またはグローバル設定を作成するには、次の手順を実行する必要があります。

  • 設定ページを追加する

    add_submenu_page( 'settings.php'... # cf options.php for blog level`
    
  • グローバルオプションを追加する

    add_site_option($key,$value)
    
  • グローバルオプションを更新する

    update_site_option($key,$value)
    
  • サイトオプションを入手する

    get_site_option($key)
    

グローバル設定はsitemetaテーブルに保存されます(個々のブログ設定は<blog_id>_optionsテーブルに保存されます)

  • 設定API はブログレベルで機能すると思うので、sitemetaではなくoptionsテーブルを使用します。そのため、ネットワークレベルでオプショングループなどを使用することはできません(これが間違っている場合はコメントしてください
6
anu

add_submenu_page()add_menu_page() etcを使用していて、マルチサイトダッシュボードに設定ページが表示されることが予想される場合は、network_admin_menuの代わりにadmin_menuフックを使用することを検討してください。

例:

add_action( 'network_admin_menu', 'network_settings_page' );
function network_settings_page(){
    add_submenu_page(

        ...
    )
}

設定を保存するためにnetwork_admin_edit_{ACTION}アクションフックを使うことができます。

参照: https://rudrastyh.com/wordpress-multisite/custom-tab-with-options.html

0
Misha Rudrastyh

さて、私は最近同じニーズに直面しましたが、その答えも知りませんでした。あなたの質問に対する明確な回答ではありませんが、代わりに「メイン」ブログのオプションの下にオプションページを作成し、マルチサイトが有効になっているかどうかを確認することもできます。

理想的な方法ではありませんが、(私のように)あなたがあなた自身の使用のための内部プラグインを作成していただけなら、それは実行可能です。それはまた管理ページのためのすべての通常の機能が利用可能であるという利点を持っています - それらはまだグローバルネットワーク管理ページコンテキストにはありません。

0
DavidJ