web-dev-qa-db-ja.com

wp-admin/widgets.phpを変更する

主にサイト管理者が各ウィジェットがサイトのどこに表示されるのかを理解しやすくするために、管理者パネルのウィジェットページのデザインを少し変えてみます。

enter image description here

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

11
Lea Cohen

WordPressを3.3.1にアップグレードした場合、これを絶対に実行する必要がありますが、管理者の各ウィジェット領域には、CSSを介してターゲティングするために使用できるIDが追加されました。例については http://core.trac.wordpress.org/ticket/18334 を参照してください。

7
helenhousandi

頭から質問を引き出すことはできませんが、完全な解決策を見つける時間がありません。だから私はここに私の考えを書き留めて、それから私は小さな恩恵を設定します.

  • 他のコンテンツの上の'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の衝突を考慮に入れる。サイドバーが登録されていないときに便利なメッセージを表示します(サイドバーの説明?)。ユーザーがウィジェットをプレビューボックスにドラッグしようとするとどうなりますか? :)

4
fuxia

簡単な答えは、コアに触れずにはできないということです。

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

0
Norcross