web-dev-qa-db-ja.com

マルチサイトサイト>情報ページにサイトオプションUIを追加する

自分のネットワーク内のサイトにメタフィールド(サムネイルやカテゴリなど)を追加したい。 get / add / update_site_option を使用してこれを行う方法を知っていますが、これらのメタフィールドを管理するためのUIをどこに置くことができるのでしょうか。

最も良い場所は、サイトの属性のすぐ後の Sites> Infos ページにありますが、私はハングするフックを見つけることができません。私は同じ画面の "Settings"タブにそれらのフィールドを追加することができますが、それを見つけるためにたくさんスクロールダウンしなければなりません、そしてそれは高度な設定と混合されます。

なにか提案を ?

3

私はついにSites> Infosテーブルにさらに行を追加する方法を見つけました: My own option in the Sites > Infos table

ちょっと見苦しいですが、うまくいきます。私は単純にアクションadmin_footerを使ってページの最後にたくさんのHTMLコードを追加し、次にjQueryを使ってそれを正しい場所に移動します。

add_action('admin_footer', 'user16975_custom_options');
function user16975_custom_options(){
    global $pagenow;
    if( 'site-info.php' == $pagenow ) {
        ?><table><tr id="user16975_custom_options">
            <th scope="row">My own option</th>
            <td><input type="text"/></td>
        </tr></table>
        <script>jQuery(function($){
            $('.form-table tbody').append($('#user16975_custom_options'));
        });</script><?php
    }
}

良いところは、フックが利用可能になるとすぐに、コードを大きく変更することなく使用できることです。

3

まず第一に - 私は同意しました、そこにカスタム設定フィールドを作成することを可能にするコアのこの部分には特別なフックはありません。しかしとにかくそれは可能です。

WordPressはあなたのカスタムタブを作成することを可能にするnetwork_edit_site_nav_links filter hookを持っています。

しかし、新しいタブのページにフックはありませんが、単純なオプションページと小さなCSSコードで結果を達成できるため、問題にはなりません。

このチュートリアルではすべてを手順で説明しています https://rudrastyh.com/wordpress-multisite/custom-tab-with-options.html (ここからすべてのコードをこのスレッドにコピーするのは理由ではないと思います) ).

1
Misha Rudrastyh

サイト情報管理ページのコードはこちらです: http://core.trac.wordpress.org/browser/trunk/wp-admin/network/site-info.php

残念ながら、site-info.phpコードにはフックやフィルタはありません。

wp-adminコードを処理するには、おそらく{$verb}_site_optionSettingsメニューに - あなた自身の管理ページを作成する必要があるようです。

0
Pat J