wp-admin / widgets.phpの変更


11

主にサイト管理者が各ウィジェットがサイト内のどこに表示されるかを理解できるようにするために、管理パネルのウィジェットページを少し違った方法で設計します。

ここに画像の説明を入力してください

そのためには、widgets.phpがレンダリングするHTMLを変更する必要があります(単にcssを変更するだけでは不十分です)。コアに触れずにそれを行うにはどうすればよいでしょうか?


上記のアプローチでウィジェットをドラッグするパネルはどこに配置されますか?
sanchothefat 2012年

下の@sanchothefat
Lea Cohen

なぜコアにパッチを提出しないのか。価値のある改善のようです...次に、サイドバーを登録するときに、追加されたパラメーターは場所を指定することです。何も指定されていない場合は、現在(右側)のように構成されていると
Taylor Dewey

回答:



4

頭の中で問題を解決することはできませんが、完全な解決策をとる時間はありません。だから私はここに自分の考えを書き留めてから、小さな賞金を設定します。

  • アクションがある'widgets_admin_page'wp-admin/widgets.php、他のコンテンツの上に。ここにプレビューボックスを配置できます。
    サンプルコード:

    add_action( 'widgets_admin_page', 'show_widget_preview' );
    function show_widget_preview()
    {
        $preview_widgets = $GLOBALS['wp_registered_sidebars'];
        unset ( $preview_widgets['wp_inactive_widgets'] );
    
        print '<div style="border:2px solid #ddf;padding:20px">'
        . '<pre>' . htmlspecialchars( print_r( $preview_widgets, TRUE ) ) . '</pre>'
        . '</div>';
    }

    これにより、登録されているすべてのサイドバーの配列が出力されます。登録済みのウィジェットを見つけるには、すべてのサイドバーを歩く必要があります。

  • プレビューを有効にするには、HTMLテンプレートとスタイルシートの2つのファイルが必要です。
    私は使用しますadd_theme_support()
    テーマのサンプルコードfunctions.php

    add_theme_support( 
        'widget_preview', 
        array ( 
            'template'   => get_stylesheet_directory() . '/widget-preview.php', 
            'stylesheet' => get_stylesheet_directory() . '/widget-preview.css' 
        ) 
    );
  • ではshow_widget_preview()、あなたのスタイルシートをエンキューし、テンプレートをロードします。で事前定義されたプレースホルダーに登録済みのサイドバーをレンダリングしwidget-preview.phpます。

  • ユーザーがウィジェットの[ 保存 ]ボタンを押した後、AJAXごとにテンプレートを更新します。

  • 課題:アクセシビリティモードを考慮し、小さなウィンドウとCSSの競合。サイドバーが登録されていない場合に役立つメッセージを表示します(サイドバーの説明?)。ユーザーがウィジェットをプレビューボックスにドラッグしようとするとどうなりますか?:)


それについて考えてくれてありがとう、@ toscho!私は現在他のプロジェクトに取り組んでいますが、これに戻る必要があります。解決策をチェックしてお知らせします。再度、感謝します!
Lea Cohen、

0

簡単に言えば、コアに触れることなくしてはできません。

ただし、各ウィジェット領域の説明(ウィジェット領域タイトルの下のテキスト)をregister_sidebar関数で設定できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.